我有一个变量列表E =(E1 = 300,E2 = 300,E3 = 300 ... E96 = 300),我将它们传递给一个函数,需要在一些方程中使用这些变量环。对于例如:
for(i in 1:96)
{
assign(paste("dE",i,sep=""),constant*corresponding E value) ### e.g dE1 = constant*E1
}
是否有一种简单的方法可以在for循环中获取Ei变量的值?
注意:常量对应于任意常量值,在当前上下文中不感兴趣
答案 0 :(得分:2)
如果你有一个命名列表E
,其中每个元素的长度为1,而常量constant
也是长度为1,那么你可以在没有循环的情况下进行操作。
E <- list(E1 = 300, E2 = 300, E3 = 300, E96 = 300)
constant <- 5
由于E
具有名称,并且它们已经是我们想要的新值名称的一半,所以我们可以做类似的事情
setNames(constant * do.call(c, E), paste0("d", names(E)))
# dE1 dE2 dE3 dE96
# 1500 1500 1500 1500
注意,如果E
是一个原子向量(你没有指定),那么操作只是
constant * E
如果您需要列表结果,可以使用constant * do.call(c, E)
打包as.list
。如果您真的想将所有这些单个值作为变量发送到全局环境,那么您可以使用
x <- setNames(constant * do.call(c, E), paste0("d", names(E)))
list2env(as.list(x), globalenv())
但我不推荐它。最好将值保存在命名向量中。
答案 1 :(得分:0)
非常简单:
ei = E[paste("E", i, sep = "")]
请注意,如果相应的Ei值不存在,则会失败。