r,为我的 b 列中的每一行分配一个 NA 值,对应于我的 a 列中的 NA
r, assign an NA value to each row in my b column corresponding to NA in my a column
我正在尝试为我的 b 列中对应于我的 a 列中的 NA 的每一行分配一个 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.na
,is.na<-
是一个 通用函数,它将元素设置为 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
的第 2 个和第 4 个元素已设置为 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
注意:我从
上的回答和评论中了解了此功能
我正在尝试为我的 b 列中对应于我的 a 列中的 NA 的每一行分配一个 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.na
,is.na<-
是一个 通用函数,它将元素设置为 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
的第 2 个和第 4 个元素已设置为 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
注意:我从