首页 > 解决方案 > 使用for循环从r中的数据框中删除特定列

问题描述

假设我有一个像这样的数据框:

>jnk1
   V1    V2    V3  V4  V5   V6  V7  V8  V9  V10  V11  V12    
1  23207 NA   450  NA  602  NA  NA  NA  NA  456  782  7439
2  1506  NA  1101  NA  303  NA  NA  NA  NA  378  378  8922
3  234   NA   456  NA  507  NA  NA  NA  NA  2384 333  6282  
4  672   NA   345  NA  918  NA  NA  NA  NA  332  322  3782  
5  980   NA   295  NA  972  NA  NA  NA  NA  2782 344  2789
6  459   NA   218  NA  810  NA  NA  NA  NA  3278 378  2782

我想编写一个脚本,它将删除所有包含“NA”的列并返回一个包含其余列的数据框。例如,我希望输出是一个仅包含列 V1、V3、V5、V10、V11、V12 和所有行的数据框

我为它写了以下代码:

for (i in 1:ncol(jnk1)){
if (unique(is.na(jnk1[i]))==TRUE)
jnk1[i]<-NULL}

但是 R 向我显示了一个错误:

Error in `[.data.frame`(jnk2, i) : undefined columns selected

并仅删除一些带有 NA 的列。如果我再次运行该脚本,它会再次向我显示相同的错误并最终删除所有所需的列。

我在这里想念什么?

标签: r

解决方案


推荐阅读