首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rollapply在将函数从另一个包应用到dataframe的列时生成一个错误。

rollapply在将函数从另一个包应用到dataframe的列时生成一个错误。
EN

Stack Overflow用户
提问于 2022-09-11 13:30:25
回答 2查看 38关注 0票数 1

下面是一个模仿的例子:

df_1 <- data. Frame( a = 1:10)

我在a上使用zoo::rollapply计算滚动平均值没有问题

代码语言:javascript
复制
zoo::rollapply(df_1$a, 5, "mean", fill = NA, align = "right")
 [1] NA NA NA NA  3  4  5  6  7  8

但是,如果我试图对HodgesLehmann函数在DescTools中执行同样的操作,则会生成一个错误:

代码语言:javascript
复制
> zoo::rollapply(df_1$a, 5, "DescTools::HodgesLehmann", fill = NA, align = "right")
Error in get(as.character(FUN), mode = "function", envir = envir) : 
  object 'DescTools::HodgesLehmann' of mode 'function' was not found

但我不难计算出df_1$a的霍奇斯·莱曼平均数

代码语言:javascript
复制
DescTools::HodgesLehmann(df_1$a)
[1] 5.5

我做错了什么,如何纠正我的错误?

真诚地,并表示衷心的感谢

托马斯·菲利普斯

EN

回答 2

Stack Overflow用户

发布于 2022-09-11 14:54:26

删除DescTools::HodgesLehmann周围的引号

代码语言:javascript
复制
zoo::rollapply(df_1$a, 5, DescTools::HodgesLehmann, fill = NA, align = "right")

您需要传递一个函数,而不是字符串。

令人惊讶的是,FUN = "mean"可以工作,但重要的是,FUN = mean也能工作。也许zoo::rollapply有一些它知道名称的函数。

票数 2
EN

Stack Overflow用户

发布于 2022-09-11 13:49:03

尝试将其设置为匿名函数。

代码语言:javascript
复制
zoo::rollapply(df_1$a, 5, function(x) DescTools::HodgesLehmann(x), fill = NA, align = "right")

#
[1] NA NA NA NA  3  4  5  6  7  8
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73679674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档