Репликация is.element - PullRequest
       2

Репликация is.element

1 голос
/ 23 сентября 2019

Мне нужно скопировать функцию is.element в R. У меня есть два вектора, и мне нужно сравнить значения в каждом, где, если один совпадает с другим, выходные данные равны True и False для всех остальных.

КодЯ пробовал, что не совсем работает:

x <- c(3, 0, -2, 0)
y <- c(-1, 0, 1)
n <- length(x)
answer <- is.logical(x)
for (i in 1:n) {
  if (x[i] == y[i]) { 
    answer[i] <- TRUE
  } else {
    answer[i] <- FALSE
    }
  }
answer

Предполагаемый ответ:

[1] FALSE  TRUE FALSE  TRUE

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

на самом деле, я только что понял это.Еще раз спасибо.

x <- c(3, 0, -2, 0)
y <- c(-1, 0, 1)
n <- length(x)
m <- length(y)
answer <- is.logical(x)
for (i in 1:n) {
  for (j in 1:m) {
    if (x[i] == y[j]) {
    answer[i] <- TRUE
    break
  } else {
    answer[i] <- FALSE
   }
  }   
}
answer
0 голосов
/ 23 сентября 2019

Опцией будет outer для сравнения каждого элемента 'x' с 'y' для возврата логического matrix, который можно уменьшить до логического vector, получив sum изИСТИНА элементы в каждой строке (rowSums) и проверить, если он больше, чем 0

rowSums(outer(x, y, `==`)) > 0
#[1] FALSE  TRUE FALSE  TRUE

Или создать логическую матрицу с sapply и сделать `colSums

colSums(sapply(x, `==`, y)) > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...