2013-06-19 2 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' – eddi

+0

Я предполагаю, что это проблема языка :) Я имел в виду, что он не работает, потому что это факторы, а не что-то вроде проблемы с факторы. – eddi