2013-06-19 23 views
2

我正在处理IP地址数据,并以字符串形式读取数据。为了简单起见,我想出了一个简单的例子。我尝试将矩阵“m”的字符串行与矩阵“abc”中的行匹配。但我一直未能得到正确的输出。R:匹配2个矩阵的字符串的行

> abc <- matrix(c("dog", "king", "bee", "cat", "apple","eel", "crab", "ball","soap","crazy"), nrow = 5) 
> abc 
    [,1] [,2] 
[1,] "dog" "eel" 
[2,] "king" "crab" 
[3,] "bee" "ball" 
[4,] "cat" "soap" 
[5,] "apple" "crazy" 

> m <- matrix(c("dog", "bee","eel","ball"), nrow = 2) 
> m 
    [,1] [,2] 
[1,] "dog" "eel" 
[2,] "bee" "ball" 

我得到的输出,这犯规任何意义:

> match(data.frame(t(abc)), data.frame(t(m))) 
[1] 1 2 2 1 1 

我期待输出为 [1] 1 NA 2 NA NA

回答

3

这是一个factor问题,试试这个相反:

match(data.frame(t(abc), stringsAsFactors = F), 
     data.frame(t(m), stringsAsFactors = F)) 
#[1] 1 NA 2 NA NA 
+0

如果这些是矩阵,它怎么可能是一个“因素问题”? –

+0

当字符串转换为'data.frame'时,字符串变成'factor's ​​ – eddi

+0

我猜这是一个语言问题:)我的意思是说它不工作,因为这些都是因素,而不是因为有某种问题因素。 – eddi