r,为我的B列中的每一行分配一个Na值,与我的A列中的Na分配

  • 本文关键字:分配 Na 一个 一行 r dataframe na
  • 更新时间 :
  • 英文 :


我正在尝试为与A列中Na相对应的B列中的每一行分配一个Na值。这些列在数据框架DF中。

但是,当我执行以下代码时,我所有的B列都将获得NA。

我应该改变什么?

  for(i in 1:nrow(df)) 
{
  row <- df[i,]
  is.na(df$`a`) <- (df$b  <- NA)
}

为此,我们可以通过创建逻辑vector(is.na(df$a)(来利用矢量化选项,使用它来将'B'的元素分配给NA

 df$b[is.na(df$a)] <- NA

如果我们使用的是data.table,则可以分配(:=(

library(data.table)
setDT(df)[is.na(a), b := NA]

根据文档 ?is.nais.na<- gen>通用函数,将元素设置为 NA 。对于is.na(x) <- value的右侧,value需要是适合与x

一起使用的索引向量。

示例:

df <- data.frame(a = LETTERS[1:5], b = 1:5)
is.na(df$b) <- c(2, 4)
df
#  a  b
#1 A  1
#2 B NA
#3 C  3
#4 D NA
#5 E  5

因此,向量df$b的第二和第四元素已将其设置为NA

现在,如果也应将df$a的相应元素设置为NA,我们可以使用:

is.na(df$a) <- is.na(df$b)
df
#     a  b
#1    A  1
#2 <NA> NA
#3    C  3
#4 <NA> NA
#5    E  5

nb:我已经从答案和评论中了解了此功能,为什么is.na((更改其参数?

最新更新