我想補充一點,沒有必要寫一個for循環,你可以設置:
dframe[dframe < 0] <- NA
由於dframe < 0
給出的邏輯指標TRUE其中DFRAME小於零,可用於索引dframe並用NA代替TRUE值。
@MrFlick說明使用NA的而不是NULL,以及如何計算各行的裝置,當忽略NA值:
rowMeans(dframe, na.rm=TRUE)
編輯,以回答問題重新:產生的NaN rowMeans以及如何刪除:
NA是「不可用」且是缺失值指示符,而NaN是「不是數字」,當算術運算的結果不能用數字定義時可以產生NaN。 0/0。我看不到您的dframe值,但是我猜想這是在所有行值爲NA時設置na.rm = TRUE時採用行的結果。查看平均值(c(NA,NA,NA),na.rm = TRUE)與平均值(c(NA,NA,NA),na.rm = FALSE)之間的差異。您可以離開NaN或決定如何在所有行值爲負值並且已由NA取代時定義行方式。
只考慮非NaN值,你可以子集不NaN的使用!is.nan
,看下面的例子:
mea <- c(2, 4, NaN, 6)
mea
# [1] 2 4 NaN 6
!is.nan(mea) # not NaN, output logical
# [1] TRUE TRUE FALSE TRUE
mea <- mea[!is.nan(mea)]
# [1] 2 4 6
或者你也可以通過設置mea[is.nan(mea)] <- ??
data.frames中不能有NULL值。你可以將它們設置爲「NA」,這是「丟失」,然後你可以使用'rowSums(...,na.rm = T)'來忽略NA值 – MrFlick
謝謝@MrFlick – cocomat