测试数据框的所有列中的条件

时间:2015-04-12 15:32:34

标签: r dataframe

我有一个数据框,我检查数据框的所有列是否都包含数值。

   V1         V2         V3
1  114        9.078186  1.6310523
2  116        8.228931  1.6405415
3  117        8.043536  1.6625413
4  118        6.179346  0.8489116

我用

sapply(df,is.numeric) 

返回

    V1            V2            V3
   TRUE            TRUE          TRUE

现在我如何检查所有列是否都是数字?我正在寻找类似的东西:

if(sapply(df,is.numeric)==TRUE)
print(" All are Numeric")

但它只检查一个条件,因为向量的长度不止一个所以它通过警告

Warning message:
In if (sapply(df, is.numeric) == TRUE):
  the condition has length > 1 and only the first element will be used

1 个答案:

答案 0 :(得分:4)

sapply返回一个True / False向量,您可以将条目视为1/0并检查总和是否等于列总数。

if(sum(sapply(df,is.numeric))==ncol(df))
  print(" All are Numeric")

或者您可以使用all()函数

if(all(sapply(df,is.numeric)))
  print(" All are Numeric")