我试图删除数据框列中的NA值,并尝试cbind
生成的向量另一个数据帧。以下是我使用的代码:
for (x in df_wide[4:8]) {
a <- df_wide[[x]][!is.na(df_wide[[x]])]
df <- cbind(df, a)
}
但是我收到了这个错误:
`Error in .subset2(x, i, exact = exact) : no such index at level 1`
我也尝试过使用apply
功能,但我遇到了同样的错误。
`Error in .subset2(x, i, exact = exact) : no such index at level 1`
function (x, i, exact)
if (is.matrix(i)) as.matrix(x)[[i]] else .subset2(x, i, exact = exact)
任何人都可以解释一下为什么我会收到此错误,我该如何解决?
如果您想查看数据框,请参阅我的previous question.
提前致谢。
答案 0 :(得分:1)
您只需指定for (x in 4:8)
即可。或者您可以引用列名,但是现在您使用列作为索引,这仅对整数列有用(如果这是您的目标)。
我不认为这种方式是解决问题的最好方法。
答案 1 :(得分:1)
for(x in df_wide [4:8])
将整个结果放在x中。所以x等于该列的整个向量。例如:x < - df_wide [4],然后x < - df_wide [5],然后......等等。
a&lt; - df_wide [[x]] [!is.na(df_wide [[x]])]
说你应该找到df_wide [[]]的值向量(没有标题),其中列号是df_wide [4](或5或6或7)的整个向量。但是列号(单数)不能是x向量中的所有值
执行此操作的类似方法是this post you can search for using "omit NA values"
df_out <- df_wide[complete.cases(df_wide[,4:8]),]
检查列4:8中的案例是否完整,然后返回df_wide中行为完整案例的所有列。