首页 > 解决方案 > R:如果满足条件,则从 data.frame 中删除列

问题描述

我有一个大约有一个 data.frame。20,000 列。从这个 data.frame 中,我想删除跟随向量值为 1 的列。

u.snp <- apply(an[25:19505], 2, mean)

我确信必须有一个直接的方法来实现这一点,但现在看不到它。任何提示将不胜感激。谢谢。

更新:感谢您的帮助。现在我尝试了以下方法:

cm <- colMeans(an.mdr[25:19505])
tail(sort(cm), n=40)

使用 tail 函数,我看到 an.mdr 的 19481 列中有 22 列的均值 = 1。接下来,我使用建议的代码删除这些列。

an.mdr.s <- an.mdr
an.mdr.s[colMeans(an.mdr.s[25:19505])==1] <- NULL

正如预期的那样,an.mdr.s 比 an.mdr 少 22 列。但是,当我计算除前 24 列之外的所有列的平均值时,我在 an.mdr.s 中再次有 22 列,列平均值 = 1。

cmm <- colMeans(an.mdr.s[25:19483])
tail(sort(cmm), n=40)

老实说,我现在看不到这里发生了什么。

标签: rdata-management

解决方案


这应该很容易使用以下命令完成:

df[colMeans(df)==1] <- NULL

推荐阅读