首页 > 解决方案 > aa循环中的ifelse与R中的向量

问题描述

我有一个看起来像的数据集

    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)

两者都没有工作。

标签: r

解决方案


在没有完全了解你的情况的情况下,我建议你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

推荐阅读