在R中用列号调用is.na/complete.cases报错:维度数量不正确
解决维度错误+删除指定列含NA的行
为啥会报错?
你碰到的incorrect number of dimensions错误,核心原因是你默认df是数据框,但它实际不是二维结构——比如是向量、列表这类一维/非二维对象,导致用df[,3:5]这种二维索引方式时直接报错。
步骤1:先确认df的真实结构
先跑这几行代码,搞清楚df到底是什么:
class(df) dim(df) str(df)
如果class(df)显示不是data.frame,那就是问题的根源。
步骤2:把df转成标准数据框
如果df不是数据框,先转成符合要求的数据框:
df <- as.data.frame(df)
注:如果df是列表,转的时候要确保每个元素的长度一致,不然会出现结构混乱。
步骤3:正确删除目标列含NA的行
转成数据框后,用下面任意一种方法都能实现需求:
- 沿用你之前的
complete.cases思路(现在能正常运行了):
clean_df <- df[complete.cases(df[, 3:5]), ]
- 用
rowSums判断(更直观,能看到每行的NA数量):
clean_df <- df[rowSums(is.na(df[, 3:5])) == 0, ]
内容的提问来源于stack exchange,提问作者Youssef
相关产品推荐
相关产品推荐

