我正在尝试删除第1列中NA的行(下面示例中的第4行),但是不删除行,而是将整个行4替换为NA:
dat <- data.frame(x1 = c(1,2,3, NA, 5), x2 = c(100, NA, 300, 400, 500))
> dat
# x1 x2
# 1 1 100
# 2 2 NA
# 3 3 300
# 4 NA 400
# 5 5 500
ad<- dat[dat$x1!=1,]
> ad
# x1 x2
# 2 2 NA
# 3 3 300
# NA NA NA
# 5 5 500
答案 0 :(得分:1)
您的代码无法正常工作,因为您正在尝试检查第一列中的值是否为NA。对于NA行,它不起作用,因为它的NA和R不能与任何东西进行比较。
你应该这样做:
ad <- dat[!is.na(dat$x1),]
x1 x2
1 1 100
2 2 NA
3 3 300
5 5 500
答案 1 :(得分:0)
尝试complete.cases
:
ad <- dat[complete.cases(dat$x1), ]
只保留dat $ x1不包含NA的行
答案 2 :(得分:0)
在 基础R 中,您可以使用is.na
并获得所需内容:
dat[!is.na(dat$x1),]
# x1 x2
# 1 1 100
# 2 2 NA
# 3 3 300
# 5 5 500