【发布时间】:2017-04-19 05:33:42
【问题描述】:
我有与变量相关的权重:
WeightVar1 <- .75
WeightVar2 <- .8
WeightVar3 <- .10
我想写一个完成以下任务的函数:
Var1_New <- Var1 * WeightVar1
Var2_New <- Var2 * WeightVar2
Var3_New <- Var3 * WeightVar3
看起来像这样
for (i in 1:3)
{
Var_New <- paste("Var",i,sep="") * paste("WeightVar",i,sep="")
Var_New <- paste("Var",i,"_New",sep="")
}
问题是 R 将 paste("WeightVar1",i,sep="") 评估为 "WeightVar1" 而不是数值 .75。
我正在评估具有不同数量的变量和权重的数据集,因此与其单独评估它们,拥有一个可以迭代到第 i 个的函数将节省时间并保持代码整洁。
【问题讨论】:
-
get(paste0("WeightVar", i))? -
试试
Map('*', mget(paste0("Var", 1:3)), mget(paste0("WeightVar", 1:3))) -
paste("WeightVar1",i,sep="")应该是"WeightVar1",因为i是 1,而不是 0.75。同样,请参阅paste("hello", "world")的输出,它与您的环境中存在的任何变量无关。 -
谢谢! @AdamQuek, get() 也正是我所需要的!不敢相信我错过了。
-
@r2evans 是的,正确的是 WeightVar1,但我在代码前面设置了 WeightVar1
标签: r