2015-01-28 2 views
-1

Я пытаюсь сравнить два вектора ниже. Значения, которые я извлекаю из файла csv, не дают правильного ответа. Если я попробую это с двумя жестко закодированными векторами, он отлично работает. Зачем?вопросы сравнения с данными из файла csv

Код:

dataIn=read.csv("MY FILE HERE"sep=",",header=TRUE) 
fromCSV<-c(dataIn[2:2,24:27]) #values: 1,1,2,2 
inputInts<-c(1,2,2,1) 

which(!mapply(identical,fromCSV,inputInts))# I expected: 1,2 as output 

Результаты:

title1 title2 title3 title4 
    1  2   3  4 

Мой набор данных намного больше, то это, я сократил его до 4 для простоты. Моя конечная цель, чтобы получить число значений, которые являются точные совпадения между двумя векторами (ответ 2)

+0

Вы ищете 'sum (fromCSV == inputInts)'? – josliber

ответ

0
x=1:5 
y=c(1,2,3,4,4) 
x 
[1] 1 2 3 4 5 
y 
[1] 1 2 3 4 4 
x==y 
[1] TRUE TRUE TRUE TRUE FALSE 
sum(x==y) 
[1] 4 

с использованием «==», чтобы сделать сравнение возвращает логическое значение ИСТИНА или ЛОЖЬ, вы можете затем просуммировать их и любое значение TRUE будет = 1, Ложная воля = 0

Это потому, что сумма является числовая функция и преобразует логические данные в числовом, т.е.

as.numeric(x==y) 
[1] 1 1 1 1 0 

Вы говорите, что это работает, когда жёстко, у вас что структуры данных одинаковы?

+0

Это была моя проблема, структуры данных были такими же. Как бы вы обобщили это, чтобы получить столбец результатов, а не только один, если заданы несколько входов? – Rilcon42

+0

Как структурируются ваши множественные входы? вы можете быть немного более конкретным – shecode

+0

Я решил проблему, используя score.multiple.choice, спасибо, хотя! – Rilcon42

Смежные вопросы