我試圖在我的列中對應於NA的b列中的每一行分配一個NA值。 這些列位於數據幀df中。r,在我的列中對應於NA的b列中的每一行分配一個NA值
但是,當我做下面的代碼,所有我的B列獲得NA。
我應該改變什麼?
for(i in 1:nrow(df))
{
row <- df[i,]
is.na(df$`a`) <- (df$b <- NA)
}
我試圖在我的列中對應於NA的b列中的每一行分配一個NA值。 這些列位於數據幀df中。r,在我的列中對應於NA的b列中的每一行分配一個NA值
但是,當我做下面的代碼,所有我的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
的第二和第四元件已經被設置爲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:我學到了從答案和評論此功能Why does is.na() change its argument?
可能[爲什麼is.na()改變它的參數?](https://stackoverflow.com/questions/42107628/why-does-is-na-change-its-argument) – Axeman