在以下分配中:Assign(paste(“ orca”,i,sep =“”),list_name [[i]]),变量名包含基于i的值的数字。现在,如果要对orca1或orca2执行操作,直到orcan。如何再次使用变量(i)引用它。
x <- 1
y <- 0
for (i in 1:10)
{
x <- x*0.8
y <- y + x*orca'i'
}
我想实现以下目标:
y = 0.8 * orca1 + 0.8 ^ 2 * orca2 + 0.8 ^ 3 * orca3 + .. + 0.8 ^ 10 * orca10
我该怎么做? 还有其他方法可以做到吗
编辑:我曾尝试使用以下列表,因为听说这是一种更合适的使用方法,如下所示:
x <- seq(1:50)
y <- 1
orcasum <- 0
orca <- list()
for(i in 1:10)
{
y <- y*0.8
orca[i] <- y*lag(x,i)
orcasum <- orcasum + orca[i]
}
我尝试了上面的代码以实现与之前相同的预期结果。我在这里遇到的问题是:“在orca [i] <-y * lag(x,i):要替换的项目数不是替换长度的倍数”。
我现在如何进行?
答案 0 :(得分:0)
以下是使用矩阵的简短版本:
x <- seq(1:50)
orca <- matrix(NA, 50, 10)
for (i in 1:10) orca[, i] <- lag(x,i)
orcasum <- orca %*% (0.8^(1:10))
或使用orca
生成矩阵sapply()
x <- seq(1:50)
orca <- sapply(1:10, FUN=lag, x=x)
orcasum <- orca %*% (0.8^(1:10))