gpt4 book ai didi

r - Dplyr产生NaN,而碱基R产生NA

转载 作者:行者123 更新时间:2023-12-04 04:15:13 24 4
gpt4 key购买 nike

考虑以下玩具数据和计算:

library(dplyr)

df <- tibble(x = 1)

stats::sd(df$x)

dplyr::summarise(df, sd_x = sd(x))

第一个计算结果为 NA,而第二个计算结果包括在dplyr函数中时, summarise会生成 NaN。我希望两种计算都能产生相同的结果,并且我想知道为什么它们不同吗?

最佳答案

它正在调用其他函数。我不清楚该函数是什么,但它不是stats之一。

dplyr::summarise(df, sd_x = stats::sd(x))
# A tibble: 1 x 1
sd_x
<dbl>
1 NA

debugonce(sd) # debug to see when sd is called

此处未调用:
dplyr::summarise(df, sd_x = sd(x))
# A tibble: 1 x 1
sd_x
<dbl>
1 NaN

但是在这里叫:
dplyr::summarise(df, sd_x = stats::sd(x))
debugging in: stats::sd(1)
debug: sqrt(var(if (is.vector(x) || is.factor(x)) x else as.double(x),
na.rm = na.rm))
...

更新

似乎 sd中的 summarise在R之外计算,在此头文件中提示: https://github.com/tidyverse/dplyr/blob/master/inst/include/dplyr/Result/Sd.h

dplyr似乎重新定义了许多功能。鉴于 var在两种情况下给出的结果相同,我认为sd行为是一个错误。

关于r - Dplyr产生NaN,而碱基R产生NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47814041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com