`c ('q01')% в% c ('q01', 'q04')` должно иметь значение ИСТИНА, но не работает в цикле условий - PullRequest
0 голосов
/ 14 июля 2020
target<-data.frame(q01=1,q03=1:10)
total<-list(t1=c('q02','q05'),t2=c('q01','q04'),t3=c('q03','q06'))

for(m in colnames(target)){
  for(j in seq_along(total)) {
    if(m %in% total[j])
    print(names(total)[j])
  }
}

Поскольку c('q01') %in% c('q01','q04') ИСТИНА, ожидаемый результат приведенного выше скрипта:

t2
t3

Но я не могу получить никакого вывода, в чем проблема?

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

В качестве альтернативы вы можете достичь этого с помощью

names(total)[sapply(total, function(x) any(x %in% colnames(target)))]

[1] "t2" "t3"
1 голос
/ 14 июля 2020

Попробуйте следующее:

target<-data.frame(q01=1,q03=1:10)
total<-list(t1=c('q02','q05'),t2=c('q01','q04'),t3=c('q03','q06'))

for(m in colnames(target)){
  for(j in seq_along(total)) {
    if(m %in% total[[j]])
      print(names(total)[j])
  }
}

[1] "t2"
[1] "t3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...