【发布时间】:2016-08-22 19:31:24
【问题描述】:
我在循环中使用以下代码,我只是在复制我面临问题的部分。整个代码非常长,我删除了在这些行之间运行良好的部分。这只是为了说明问题:
for (j in 1:2)
{
assign(paste("numeric_data",j,sep="_"),unique_id)
for (i in 1:2)
{
assign(paste("numeric_data",j,sep="_"),
merge(eval(as.symbol(paste("numeric_data",j,sep="_"))),
eval(as.symbol(paste("sd_1",i,sep="_"))),all.x = TRUE))
}
}
我面临的问题是,我想使用(eval+paste)而不是第二步中的分配
for (j in 1:2)
{
assign(paste("numeric_data",j,sep="_"),unique_id)
for (i in 1:2)
{
eval(as.symbol((paste("numeric_data",j,sep="_"))))<-
merge(eval(as.symbol(paste("numeric_data",j,sep="_"))),
eval(as.symbol(paste("sd_1",i,sep="_"))),all.x = TRUE)
}
}
但是 R 在分配新变量时不接受 eval。我查看了论坛,到处都建议分配来解决问题。但是,如果我使用 assign 循环会覆盖我之前生成的“numeric_data”而不是添加到它,因此我只会得到 i 的一个值而不是两者的输出。
【问题讨论】:
-
我不确定我是否会考虑使用
eval“正常”。 -
好的,让我删除那句话
-
您不必删除它;我的意思是,你为什么要专门使用
eval? -
...
assign“正常”的随意使用也不是。点名名单!点名名单!点名名单! (想象一下我像个大傻瓜一样上下跳跃,挥舞着我的手臂。) -
我认为这个问题的一个主要困难是它被表述为XY problem。
标签: r loops assign dynamic-variables