【发布时间】:2018-06-08 09:27:00
【问题描述】:
我有一个很大的data.table df,由 0 到 1 之间的整数值组成,我想更改一些列。这些名称如下所示。我想为 10 个缩放因子(也是整数)执行此操作,所以我认为循环会更有效。我用了data.table这个包。
Cur_1 Cur_2 Cur_3 Cur_4 Cur_5 Cur_6 Cur_7 Cur_8 Cur_9 Cur_10 Cur_11 Cur_12
0.225 0.227 0.229 0.233 0.225 0.226 0.228 0.229 0.229 0.301 0.302 0.305
0.226 0.227 0.229 0.233 0.225 0.226 0.228 0.229 0.229 0.301 0.302 0.305
if(pd_scaling1!=0){
df$Cur_1=df$Cur_1*(1+scaling1)
df$Cur_2=df$Cur_2*(1+scaling1)
df$Cur_3=df$Cur_3*(1+scaling1)
df$Cur_4=df$Cur_4*(1+scaling1)
df$Cur_5=df$Cur_5*(1+scaling1)
df$Cur_6=df$Cur_6*(1+scaling1)
df$Cur_7=df$Cur_7*(1+scaling1)
df$Cur_8=df$Cur_8*(1+scaling1)
df$Cur_9=df$Cur_9*(1+scaling1)
df$Cur_10=df$Cur_10*(1+scaling1)
df$Cur_11=df$Cur_11*(1+scaling1)
df$Cur_12=df$Cur_12*(1+scaling1)
}
我试过了:
for(i in 1:10){
if(get(paste("scaling",i,sep=""))!=0){
for(j in (i-1)*12+1:i*12){
df[,get(paste("Cur",j,sep="_")):=get(paste("Cur",j,sep="_"))*rep((1+get(paste("scaling",i,sep=""))),h_i)
}
}
但出现以下错误:
get(paste("Cur", j, sep = "_")) 出错:找不到对象 'Cur_2' }
【问题讨论】:
-
请查看How to make a great R reproducible example? 并解决您的问题,以便我们为您提供帮助。
-
请阅读 data.table 小插曲。他们展示了如何正确循环列。
-
@Roland 能给我一个链接吗,我在data.table vignettes找不到它
-
参见该小插图中的 2.e 和 this one 中的 2.e。
-
@abhiieor 感谢您的提示,但它不起作用
标签: r data.table