簡體   English   中英

dplyr:使用NA逐行變異時出錯

[英]dplyr: error with rowwise mutate with NA

我在dplyrdplyr按行mutate奇怪錯誤。 這是一個例子:

set.seed(1)
df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'b'] <- NA

sum沒什么問題,但摘要功能有問題:

mutate(rowwise(df), sum(a, b, na.rm = T)) # works

mutate(rowwise(df), mean(a, b, na.rm = T))
#! Error: missing value where TRUE/FALSE needed
mutate(rowwise(df), median(a, b, na.rm = T))
#! Error: unused argument (-0.820468384118015)

現在,我們可以嘗試NA在第一列:

df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'a'] <- NA

mutate(rowwise(df), sum(a, b, na.rm = T)) # works

mutate(rowwise(df), mean(a, b, na.rm = T))
#! no error, but returns `NaN`
mutate(rowwise(df), median(a, b, na.rm = T))
#! Error: unused argument (-0.820468384118015)

我不確定在這里是否做錯了什么。 我認為預期的行為應與以下內容相同:

as.data.frame(apply(df, 1, mean, na.rm = T)

謝謝!

您的錯誤是您錯誤地調用了meanmedian

盡管sum可以采用任意數量的參數,並且只會將它們全部相加,但meanmedian僅采用一個x參數來取其平均值/中位數。

就像ab是向量,並且您想要組合向量的均值一樣,您將使用mean(c(a, b))而不是mean(a,b) ,您可以在此處執行以下操作:

mutate(rowwise(df), mean=mean(c(a, b), na.rm = T), med=median(c(a, b), na.rm=T))

(注意:您一次只計算兩個值的平均值和中位數,因此無論如何平均值等於中位數...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM