【发布时间】:2020-10-14 01:02:22
【问题描述】:
我有一个如下的数据框
lower <- c(1,5,15)
upper <-c(5,15,30)
df<-data.frame(lower,upper)
我想使用 dplyr 的 mutate 来创建一个定义函数曲线下面积的新变量。函数如下。
my_fun <- function(x){y = 1.205016 + 0.03796243 * log(x)}
我正在使用pracma 包中的integral() 函数来查找曲线下的区域。当我在一对上限值和下限值上使用此函数时,它运行时没有错误,如下所示。
integral(my_fun, 1,5)
[1] 4.973705`
但是,当我尝试使用 dplyr 的 mutate 运行相同的功能时,我得到以下信息。
new_df <- df %>%
mutate(new_variable = integral(my_fun, lower, upper))
积分错误(my_fun, lower, upper) : length(xmin) == 1 is not 是的
似乎integral 函数必须读取整个向量df$lower 和df$upper,而不是读取单个值对1,5。有没有使用 dplyr 的mutate 的解决方案,或者我应该寻找其他解决方案。
我环顾四周,与 mutate 相关的这个错误的唯一实例似乎没有解决我在这里遇到的问题。
【问题讨论】: