【发布时间】:2022-01-23 20:38:11
【问题描述】:
我有许多数组要填充 R,每个数组都有不同的名称,具有特定的模式。我遇到的问题是我无法弄清楚如何将数组名称作为变量引用,因此我可以在循环中以系统的方式引用它们。例如,它们是使用此循环创建的。
for (i in c(40,45,50,55,57,60,65)){
assign(paste0('hdd_',as.character(i),'_365_z'), rep(NA,365))}
我想填充这些数组中的每一个,现在命名如下:hdd_40_365_z、hdd_45_365_z 等。
假设我想使用一个简单的函数来填充这些数组中的每一个:
my_func <- function(value,doy){
return(value * doy/2)} # doy = doy or 1:365
我可以写一个循环来做到这一点:
for (j in c(40,45,50,55,57,60,65)){
for (k in 1:365){
# try to fill arrays one day at a time
paste0('hdd_',as.character(j),'_365_z')[k] <- my_func(j,k)}}
显然,这是行不通的。我尝试使用以下方法来执行此操作,但它不起作用。我认为必须有一种方法可以做这样的事情,但我无法弄清楚 eval、parse、as.name 或其他东西的组合。任何帮助都会很棒。谢谢。
eval(parse(text = paste0('hdd_',as.character(j),'_365_z')[k] <- my_func(j,k)))
【问题讨论】:
-
它们必须是单独的变量吗?通常使用单个
list()并让每个变量成为一个列表元素会容易得多。