从R中的数据帧中删除行时出现NA值问题

从R中的数据帧中删除行时出现NA值问题,r,dataframe,R,Dataframe,这是我的数据框: ID <- c('TZ1','TZ2','TZ3','TZ4') hr <- c(56,32,38,NA) cr <- c(1,4,5,2) data <- data.frame(ID,hr,cr) ID hr cr 1 TZ1 56 1 2 TZ2 32 4 3 TZ3 38 5 4 TZ4 NA 2 这就是我认为有效的方法: data = data[data$hr !=56,] 但是,生成的数据帧如下所示: ID hr

这是我的数据框:

ID <- c('TZ1','TZ2','TZ3','TZ4')
hr <- c(56,32,38,NA)
cr <- c(1,4,5,2)
data <- data.frame(ID,hr,cr)

   ID hr cr
1 TZ1 56  1
2 TZ2 32  4
3 TZ3 38  5
4 TZ4 NA  2
这就是我认为有效的方法:

data = data[data$hr !=56,]
但是,生成的数据帧如下所示:

     ID hr cr
2   TZ2 32  4
3   TZ3 38  5
NA <NA> NA NA
ID-hr-cr
2 TZ2 32 4
3 TZ3 38 5
娜娜娜
我怎样才能修改代码以合并NA值,这样就不会发生这种情况?谢谢你的帮助,我想不出来


编辑:我还想在数据框中保留NA值。

问题是,当我们执行
==
时=,如果存在NA值,它将保持原样,并为相应的NA值创建NA行。因此,使逻辑索引只包含真/假值的一种方法是在比较中也使用
is.na

 data[!(data$hr==56 & !is.na(data$hr)),]
 #   ID hr cr
 #2 TZ2 32  4
 #3 TZ3 38  5
 #4 TZ4 NA  2
我们也可以应用相反的逻辑

subset(data, hr!=56|is.na(hr))
#   ID hr cr
#2 TZ2 32  4
#3 TZ3 38  5
#4 TZ4 NA  2
subset(data, hr!=56|is.na(hr))
#   ID hr cr
#2 TZ2 32  4
#3 TZ3 38  5
#4 TZ4 NA  2