【发布时间】:2017-03-20 15:40:33
【问题描述】:
我使用 ifelse 过滤我的工作结果,我想做的如下所示,
当 j 等于 A 或 B 或 C,并且 k 等于 first 时,然后在 var15 中进行 rbind。
当j等于D或E,k等于秒时,在var30中做rbind。
当 j 等于 F 时,则在 var45 中进行 rbind。
我怎样才能修改我的代码来达到我的需要?
# Below is what I've done.
for (j in c("A","B","C","D","E","F")){
for (k in c("first","second")){
# do something here.
ifelse(j== "A" | "B" | "C" & k== "first", var15<-rbind(var1, var2),var15<-rbind(var15,var1, var2))
ifelse(j== "D" | "E" & k== "second", var30<-rbind(var3,var4,var5),var30<-rbind(var30,var3,var4,var5))
ifelse(j== "F" , var45<-rbind(var3,var4),var45<-rbind(var45,var3,var4))
}
Get_all <- rbind(Get_all ,var15,var30,var45)
}
【问题讨论】:
-
一个集合中的成员资格被测试为
j %in% c("A","B")。此外,您可能应该使用var15 <- if (cond) x else y。此外,您不应该在 R 中循环发展事物(谷歌搜索将导致资源解释原因)。 -
必须是
j %in% c("A", "B", "C")或j == "A" | j == "B" | j == "C"
标签: r