我正在尝试将向量添加到for循环中的列表中,并希望根据计数器的值来命名组件
这是我在没有for循环
的情况下向列表中添加向量的方法momentum$mom1 <- (prices[period.ends, ] / mlag(prices[period.ends,],1)-1)
momentum$mom3 <- (prices[period.ends, ] / mlag(prices[period.ends,],3)-1)
momentum$mom6 <- (prices[period.ends, ] / mlag(prices[period.ends,],6)-1)
但这看起来效率低下并且必须有一种方法来创建名称“mom1”,“mom2”和“mom3”以某种方式连接“妈妈”和我(作为循环中的计数器,假定值为1 ,3,6)。
我正在思考
momentum = list()
periods <- c(1,3,6)
for (i in periods){
momentum$paste("mom",i,sep="")<- (prices[period.ends,]/mlag(prices[period.ends,],i)-1)
}
已广泛搜索此论坛,但似乎无法找到我的答案。我是R的初学者,所以非常感谢你的帮助。
答案 0 :(得分:2)
momentum = list()
periods <- c(1,3,6)
n <- length(periods)
创建列表条目后更改每个名称:
for (i in 1:n){
momentum[[i]] <- "stuff"
names(momentum)[i] <- paste("mom",i,sep="")
}
现在对象动量具有所需的名称
答案 1 :(得分:1)
对列表的双方括号分配将评估其参数:
> z=list()
> n="foo"
> z[[n]]=99
> z
$foo
[1] 99
所以你的不可复制的例子将是:
for (i in periods){
momentum[[paste0("mom",i)]] <- (prices[period.ends,]/mlag(prices[period.ends,],i)-1)
或者你可以构造一个没有名字的列表,创建一个名称向量,然后使用names(momentum) = paste0("mom",periods)