R:循环创建变量

标签 r

我有11个不同长度的列表,作为p1,p2,p3,...,p11导入到R中。现在,我想从所有列表中获得rollmean(库TTR),并将结果命名为p1y,p2y,...,p11y。

这似乎是循环的工作,但我读到这在R中通常不是一个好习惯。我尝试了一些(愚蠢的)方法,例如

sample=10
for (i in 1:11){
paste("p",i,"y",sep="")<-rollmean(paste("p",i,sep=""),sample)
}

这不起作用。
我也尝试将其与assign()结合使用,但是据我了解,assign只能接受一个变量和一个值。

一如既往,让我印象深刻的是我缺少R的一些基本功能。

最佳答案

正如Manuel指出的那样,如果将变量组合到一个列表中,您的生活将会更加轻松。为此,您需要mget(“多次获得”的缩写)。

var_names <- paste("p", 1:11, sep = "")
p_all <- mget(var_names, envir = globalenv())

现在,只需使用lapply在列表的每个元素上调用rollmean
sample <- 10
rolling_means <- lapply(p_all, rollmean, sample)

(此外,请考虑将sample重命名为还不是函数名称的名称。)

我建议将答案保留在列表中,但是如果您真的很喜欢让单独的滚动均值变量与单独的p1,p11变量匹配的想法,请使用list2env
names(rolling_means) <- paste(var_names, "y", sep = "")
list2env(rolling_means, envir = globalenv())

关于R:循环创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914568/

相关文章:

r - 诊断为什么自定义函数会产生意外警告(关于position_jitterdodge)

r - 将 dgCMatrix 转换为逻辑矩阵

r - 将 Igraph 转换为 VisNetwork

R:如何从每一列和 Bootstrap 中随机采样一个值

r - 在R中生成没有Decimal的随机数并更改为Numeric而不改变值

html - rmarkdown 文档中的中心传单

r - 如何将数据帧转换为可用格式以在 R 中进行序列挖掘?

r - 按日期的唯一值

r - 我们如何使用 R 创建 Excel 色标?

c - sprintf 无效格式 '%d'