Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R pmatch以错误的方式返回字符匹配_R_Character_Matching_Map Matching - Fatal编程技术网

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

R pmatch以错误的方式返回字符匹配,r,character,matching,map-matching,R,Character,Matching,Map Matching,我有一个字符单词矩阵(3乘3)和一本字典(n乘1)。我想查找与字典匹配的字符,将替换为字典中存在的字符位置,并删除所有不匹配的单词(NA或NULL)。我尝试过简单的pmatch,但它不起作用。我在寻找这样的结果 1 5 2 1 4 NA 3 NA 2 但以这种方式得到结果,[1]1Na354Na2NaNa 我试过下面的代码 a <- matrix(c("456_rr", "432_uu", "522_kk", "456_rr", "432_tt", "5

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

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

我试过下面的代码

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)

ab'中的
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

ufs,谢谢@akrun。但仍远未达到预期效果。如何保持矩阵智能?我刚刚更新了一个解决方案。您可以通过调用
matrix
或使用
dim
将其转换为矩阵。您确定预期中的值正确吗?如果输入错误,请告诉我。否则我会删除我的答案。这是一个拼写错误,你的答案是正确的。谢谢@akrun的帮助,但它仍然不是字典中预期的位置。是因为
pmatch
的限制吗?@Noah改变了输出。我们需要添加重复项。好的
`dim<-`(pmatch(a, b, duplicates.ok=TRUE), dim(a))
#     [,1] [,2] [,3]
#[1,]    1    5    2
#[2,]    1    4    2
#[3,]    3   NA    2