如果查询条件太多,如何在R中使用which()?

如果查询条件太多,如何在R中使用which()?,r,R,我知道,我们可以使用which()函数根据给定的条件对数据框进行子集。如果我有一个包含5列的数据框(dat),我需要找到第5列的平均值,其中w、x、y、z为第一、第二、第三和第四列,那么我会这样做- myrows<-dat[which((dat[,1]==w)&(dat[,2]==x)&(dat[,3]==y)&(dat[,4]==z)),5] mean(myrows) myrows您可以设置一个引用data.frame,其中一行与您的df列相同,然后按行检查

我知道,我们可以使用which()函数根据给定的条件对数据框进行子集。如果我有一个包含5列的数据框(dat),我需要找到第5列的平均值,其中w、x、y、z为第一、第二、第三和第四列,那么我会这样做-

 myrows<-dat[which((dat[,1]==w)&(dat[,2]==x)&(dat[,3]==y)&(dat[,4]==z)),5]
 mean(myrows)

myrows您可以设置一个引用
data.frame
,其中一行与您的
df
列相同,然后按行检查所有值是否相等,如下所示:

reference <- data.frame(w, x, y, z)
mean(df[apply(df[,-5],1,function(x)all(x==reference)),5])

reference请提供可复制的示例和预期输出,以便其他人更容易帮助您。如需更多信息,无需在此处使用
。R支持逻辑子集。这就解决了所有问题。
 for(i in 1:50)
 myrows<-dat[which(dat[,i]==x[i])]
reference <- data.frame(w, x, y, z)
mean(df[apply(df[,-5],1,function(x)all(x==reference)),5])