Использование логического оператора OR при сравнении двух столбцов в R - PullRequest
0 голосов
/ 24 октября 2018

У меня большой фрейм данных, в котором я печатаю столбцы, которые не соответствуют другому столбцу.Мне удалось сравнить столбцы 4 и 9 с этим фрагментом кода:

test_no_match <- newtest[which(newtest[,4] != newtest[,9] ),]

Однако я хотел бы напечатать фрейм данных, где столбцы 4 и 9 не совпадают ИЛИ, если столбцы 6 и 11 не совпадают,Так что будет напечатано, если один из параметров верен.

Я пытался использовать:

testnomatch <- (newtest[which(newtest[, 4] != newtest[, 9] ), ] || newtest[which(newtest[, 6] != newtest[, 11] ), ])

Но я продолжаю получать ошибки, такие как

недопустимый тип 'x' в 'x ||y '

Есть ли способ сравнить несколько параметров одновременно?Спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Что не так с ...

 testnomatch<- (newtest[which(newtest[,4] != newtest[,9] ),] || newtest[which(newtest[,6] != newtest[,11] ),]) 

Несколько вещей.

Во-первых, || ожидает условие длины 1 и предназначено для использования в условных выражениях, таких как if(a || b) .....

Во-вторых, | предназначен для объединения двух условий одинаковой длины .Здесь у вас есть что-то другое.

Итак, чтобы сложить кусочки:

 condition1 <- newtest[,4] != newtest[,9]
 condition2 <- newtest[,6] != newtest[,11]
 jointcondition <- condition1 | condition2
 testnomatch <- newtest[which(jointcondition),]

Или в одну строку:

 newtest[which((newtest[,4] != newtest[,9]) | (newtest[,6] != newtest[,11])),]

Это должно сработать, но, конечно, у меня не было возможности попробовать какВы не предоставили воспроизводимый пример:)

...