简体   繁体   English

R中的向量在aa循环内的ifelse

[英]ifelse within a a loop with vectors in R

I have a data set that looks like 我有一个看起来像的数据集

    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

I then two sets of vectors 然后我有两组向量

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

I want to check to does column 1 equal yes and column 2 equal 3. I used this code 我想检查第1列是否等于,第2列等于3。

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

This worked perfectly but I want code that will loop through vectors of size n, n values and n columns. 这工作得很好,但是我希望代码能够循环通过大小为n,n值和n列的向量。

I tried 我试过了

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

and

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

Both did not work. 两者都不起作用。

Without having completely understood what your condition is, I suggest you using dplyr in combination with ifelse . 在不完全了解您的状况的情况下,建议您将dplyrifelse结合使用。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM