和或在R中

和或在R中,r,R,我用ifelse过滤我的工作结果,我想做的如下 当j等于A或B或C,k等于first,然后是var15中的rbind 当j等于D或E,k等于秒时,在var30中做rbind 当j等于F时,则rbind在var45中 我如何修改代码以达到我的需要 # Below is what I've done. for (j in c("A","B","C","D","E","F")){ for (k in c("first","second")){ # do something

我用ifelse过滤我的工作结果,我想做的如下

当j等于A或B或C,k等于first,然后是var15中的rbind

当j等于D或E,k等于秒时,在var30中做rbind

当j等于F时,则rbind在var45中

我如何修改代码以达到我的需要

# 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)

    }
下面是我所做的。 (c中的j(“A”、“B”、“c”、“D”、“E”、“F”)){ 对于(c中的k(“第一”、“第二”)){ #在这里做点什么。
如果else(j==“A”|“B”|“C”&k==“first”,则var15
%in%
将使用lhs与rhs匹配。由于在for循环中lhs的长度等于1,因此它将始终计算为逻辑长度1

然后将k与第一个或第二个进行比较。由于LH和RH的长度相等,即1,因此在将k与第一个或第二个进行比较时,
==
将计算为逻辑长度为1。然后将这两个逻辑与
&
条件相结合

for (j in c("A","B","C","D","E","F")){
  for (k in c("first","second")){

    # do something here.

    var15 <- ifelse( ( j %in% c( "A", "B", "C") && k == "first"), rbind(var1, var2), rbind(var15, var1, var2))
    var30 <- ifelse( ( j %in% c( "D", "E") && k == "second"), rbind(var3, var4, var5), rbind(var30, var3, var4, var5))
    var45 <- ifelse( j == "F" , rbind( var3, var4), rbind(var45, var3, var4))

  }

  Get_all <- do.call( 'rbind', list( var15,var30,var45))

}
(c中的j(“A”、“B”、“c”、“D”、“E”、“F”)){ 对于(c中的k(“第一”、“第二”)){ #在这里做点什么。
var15在一个集合中的成员资格是像在%c(“a”,“B”)中的
j%
一样测试的。此外,您可能应该使用
var15,它需要在%c(“a”,“B”,“c”)中的
j%
j==“a”| j==“B”| j==“c”