删除标准偏差为零的列

标签 r dataframe

我想从 data.frame 中删除所有标准偏差为零的列。

这不起作用:

  df <- df[, ! apply(df , 2 , function(x) sd(x)==0 ) ]

我得到错误:

undefined columns selected



更新

我选择了 Filter作为我的首选答案,因为它似乎也可以处理 NA s,非常有用。

例如,在
df <- data.frame(v1=c(0,0,NA,0,0), v2=1:5)

列 'v1' 被删除 Filterapply方法产生错误。

感谢所有其他解决方案,我从他们那里学到了很多东西。

更新 2:

apply 给出的那些错误可以通过添加 na.rm = TRUE 来修复像这样调用 sd:
df[, ! apply(df , 2 , function(x) sd(x, na.rm = TRUE)==0 ) ]

最佳答案

使用过滤器:

Filter(function(x) sd(x) != 0, df)

关于删除标准偏差为零的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30798233/

相关文章:

r - 通过向量的笛卡尔积(类型)创建数据表

python - 将 df1 列值替换为 df2 列值 - df-1 column-3 的值是 df-2 的列

r - 允许引用具有索引和名称的列的函数

r - 通过函数对 data.table 进行绝对降序排序?

python - pandas dataframe where 子句带点与括号列选择

python - Pandas - 识别项目的最后一个条目

r - 更改网络图中的字体

r - 嵌套for循环的向量化

删除特定列中具有特定值的重复行

r - 如何使用node-rio sourceAndEval?