【发布时间】:2021-06-18 08:09:34
【问题描述】:
我是 R 新手,经过数小时尝试和搜索类似问题的答案后,我仍然无法弄清楚如何在整数 n 上循环以下代码,而不是为每个 n 编写一行。
d <- data.frame(s = seq(0, 0.125, 0.001))
f <- function(n, s, x) {
(1 - 2*sqrt(2*s) + x)^(n - 1)*(1 - 2*sqrt(2*s) + (1 + n)*x) - 1)
}
d <- d %>%
mutate(p_2 = mapply(function(n,s) uniroot(f, interval = c(0,1),n=n,s=s)$root,n=2,d$s),
p_3 = mapply(function(n,s) uniroot(f, interval = c(0,1),n=n,s=s)$root,n=3,d$s),
p_4 = mapply(function(n,s) uniroot(f, interval = c(0,1),n=n,s=s)$root,n=4,d$s),
p_5 = mapply(function(n,s) uniroot(f, interval = c(0,1),n=n,s=s)$root,n=5,d$s))
以下确实重复打印我试图添加到我的数据框 d 的变量,
for (i in c(2:10)){
mapply(function(n,s) uniroot(f, interval = c(0,1),n=n,s=s)$root,n=i,d$s) %>% print()
}
但是当我尝试在循环中将其与 mutate 函数一起使用时,只有一个名为“p_i”的新变量被添加到数据框中,该变量采用“p_10”的值:
for (i in 2:10){
d <- d %>% mutate(p_i = mapply(function(n,s) uniroot(f, interval = c(0,1),n=n,s=s)$root,n=i,d$s))
}
如何让 R 循环遍历 n 并为每次迭代附加一个新变量?如果我遗漏了一个明显的错误,或者根本不需要使用 for 循环来完成这项工作,我深表歉意。任何帮助将不胜感激。
【问题讨论】: