ifelse внутри цикла с векторами в R - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть набор данных, который выглядит как

    V1 V2   V3
1  Yes  1    a
2  no   2    a
3  Yes  3 NULL
4  no   4    a
5  Yes  1    a
6  no   2 NULL
7  Yes  3    a
8  no   4    a
9  Yes  1 NULL
10 no   2    a
11 Yes  3    a
12 no   4 NULL
13 Yes  1    a
14 no   2    a
15 Yes  3    a
16 no   1 NULL
17 Yes  2    a

Я тогда два набора векторов

values=c('Yes',3)
columns=c(1,2)

Я хочу проверить, равен ли столбец 1 да, а столбец 2 равен 3Я использовал этот код

f=ifelse(data[,columns[1]]==values[1] & data[,columns[2]]==values[2] ,1,0)

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

Я пытался

flagf=apply(data, 1, function(x) {ifelse(all(data[,columns[1:length(columns)]==values[1:length(values])),0,1)})

и

ifelse(data[,columns[1:length(columns)]==values[1:length(values)],0,1)

Оба не работали.

1 Ответ

0 голосов
/ 26 ноября 2018

Не понимая полностью ваше состояние, я предлагаю вам использовать dplyr в сочетании с ifelse.

library(dplyr)
df <- read.table("clipboard", header=T) # reading your data...
df %>%
  mutate(cond = ifelse(V1=="Yes" & V2==3, TRUE, FALSE))
    V1 V2   V3  cond
1  Yes  1    a FALSE
2   no  2    a FALSE
3  Yes  3 NULL  TRUE
4   no  4    a FALSE
5  Yes  1    a FALSE
6   no  2 NULL FALSE
7  Yes  3    a  TRUE
8   no  4    a FALSE
9  Yes  1 NULL FALSE
10  no  2    a FALSE
11 Yes  3    a  TRUE
12  no  4 NULL FALSE
13 Yes  1    a FALSE
14  no  2    a FALSE
15 Yes  3    a  TRUE
16  no  1 NULL FALSE
17 Yes  2    a FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...