簡體   English   中英

R中的向量在aa循環內的ifelse

[英]ifelse within a a loop with vectors in 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)

兩者都不起作用。

在不完全了解您的狀況的情況下,建議您將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