r - pmatch 以错误的方式返回字符匹配

标签 r character matching map-matching

我有一个字符单词矩阵(3×3)和一本字典(n×1)。我想找到与字典匹配的字符,将被替换为字典中存在的字符位置,并且所有不匹配的单词将被删除(NA或NULL)。我尝试过简单的 pmatch,但它不起作用。我正在寻找这样的结果,

1    5    2
1    4    NA
3    NA   2

但以这种方式得到结果,[1] 1 NA 3 5 4 NA 2 NA NA

我尝试了下面的代码,

a <- matrix(c("456_rr", "432_uu", "522_kk", "456_rr", "432_tt", "522", "456_ss", "432", "522_kk"), nrow = 3, ncol = 3, byrow = TRUE) # WordTable

b <- matrix(c("456_rr","522_kk","456_ss", "432_tt", "432_uu"), nrow = 5, ncol = 1) # Dictionary

c <- pmatch(a, b)

print(c)

最佳答案

“b”中的nrow 不正确。应该是5

b <- matrix(c("456_rr","522_kk","456_ss", "432_tt", 
     "432_uu"), nrow = 5, ncol = 1) 
v1 <- pmatch(a,b)
m1 
#[1]  1 NA  3  5  4 NA  2 NA NA

dim(m1) <- dim(a)
m1
#     [,1] [,2] [,3]
#[1,]    1    5    2
#[2,]   NA    4   NA
#[3,]    3   NA   NA

如果我们需要获取重复项的索引,请使用默认情况下为FALSE的duplicates.ok=TRUE

`dim<-`(pmatch(a, b, duplicates.ok=TRUE), dim(a))
#     [,1] [,2] [,3]
#[1,]    1    5    2
#[2,]    1    4    2
#[3,]    3   NA    2

关于r - pmatch 以错误的方式返回字符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326174/

相关文章:

用于根据不均匀日期创建不均匀组的 R 函数

r - 按组数过滤data.table

java - 包含单个字符的字符串是否与 char 相同?

javascript - 如何在 JavaScript 中将用户输入与数组数据进行匹配

R - 随时间变化的观察图频率,值范围较小

r - 在 R 中生成适合在 Word 2007 中打印的矢量图形图像(即元文件)

sql - SQL Server TRIM字符

c# - 加载字体并获取C#中的字符

python - 比较 Python Pandas DataFrames 以匹配行

java - 如何替换数组的值?