数据框中列的名称

时间:2017-11-09 15:41:36

标签: r

假设我们的数据框 data 包含以下列名: A1, A2, A3 。我想检查是否有任何列 0 。而不是做以下事情:

 if (data$A1 == 0 || data$A2 == 0 || data$A3 == 0)
    {
        print("TRUE")
    }

有没有办法做这样的事情:

      for (i in 1:3)
         {
            if (data$Ai == 0)
              {
                print("TRUE")
              }
         }

如何在变量名中使用索引?

2 个答案:

答案 0 :(得分:1)

您不能使用$语法的变量。最好只使用列名作为字符串(你可以做)将data.frame子集化,然后检查是否有0

any(data[, paste0("A", 1:3)]==0)

答案 1 :(得分:0)

我不清楚你是否只想知道列的任何元素是否等于0,列的每个元素是否等于0,或者你想要什么。也就是说,在我的例子/答案中,你可以改变函数参数来寻找你想要的东西。

我会使用apply函数,因为它比编写循环更简单快捷。第一个参数是您的数据帧,第二个参数是1表示行,2表示列(您想要的):

df <- data.frame(A=c(1,0,3),B=c(3,3,3),C=c(4,3,0)) # Replace with your data

# For if you just want to know if each column contains a 0
apply(df,2,FUN=function(x) max(x==0,na.rm=T)) 

# For if you just want to know how many 0s are in each column
apply(df,2,FUN=function(x) sum(x==0))

# For if you want to know if all entries in each column are 0
apply(df,2,FUN=function(x) all(x==0))

# etc.

这些将返回命名向量,您可以按名称查看每列的答案。

我希望这有帮助!