我想从数据框df1
中删除列总和少于150的列我的数据框是
chr leftPos FLD0195 FLD0197 FLD0201 FLD0203 FLD0211 FLD0243
chr1 100260254 34 52 29 18 13 30
chr1 100735342 44 111 88 65 40 66
chr1 100805662 0 0 1 1 0 0
chr1 100839460 1 0 5 0 0 0
使用的公式I如下。它运行没有错误,但df2与df1
完全相同 df2 <- df1[,(colSums(df1[,3:ncol(df1)]) > 100000),]
答案 0 :(得分:3)
在k
列子集上运行布尔表达式时,您将收到k
大小的逻辑向量。当在n
大小的列数据集中输入时,从向量开头的n-k
值被回收(直到它达到n
的大小),因此选择了错误的列。在您的情况下,修复很简单,只需在逻辑向量的开头添加n-k
TRUE
值(因为您希望将所有n-k
列保留在开头)
df1[c(rep(TRUE, 2L), colSums(df1[3L:ncol(df1)]) > 150L)]
# chr leftPos FLD0197
# 1 chr1 100260254 52
# 2 chr1 100735342 111
# 3 chr1 100805662 0
# 4 chr1 100839460 0