【发布时间】:2016-05-12 04:41:55
【问题描述】:
我想在数据表中重复 17 年。我想将这组相同的值放入一列并为其命名。
更准确地说,我的数据如下,称为“mean_exp_TOD”。
TheInterval mean_Exports
1: 0 0.000000e+00
2: 1 0.000000e+00
3: 2 0.000000e+00
4: 3 0.000000e+00
5: 4 0.000000e+00
6: 5 0.000000e+00
7: 6 0.000000e+00
8: 7 0.000000e+00
9: 8 3.278689e-05
10: 9 6.933060e-03
11: 10 1.747746e-01
12: 11 1.330710e+00
13: 12 4.628286e+00
14: 13 1.097312e+01
15: 14 2.067735e+01
16: 15 3.214487e+01
17: 16 4.381565e+01
18: 17 5.434046e+01
19: 18 6.208044e+01
20: 19 6.807106e+01
21: 20 7.212614e+01
22: 21 7.434484e+01
23: 22 7.452706e+01
24: 23 7.376302e+01
25: 24 7.110812e+01
26: 25 6.784952e+01
27: 26 6.270421e+01
28: 27 5.503787e+01
29: 28 4.597257e+01
30: 29 3.537733e+01
31: 30 2.398188e+01
32: 31 1.262636e+01
33: 32 4.892807e+00
34: 33 1.284960e+00
我想要的是创建一个新的数据表,其中有一列名为“TheInterval”,它从我的 sn-p 中获取值。然后我只想创建一个基于年份的列。
我一直在做的是:
Years <- c(1999:2016)
for (i in Years){
mean_EXP <- mean_exp_TOD[, list(Interval = c(0:47), i = mean_exp_TOD[,mean_Exports])]
}
然而这会返回: (出于解释的原因,我将其缩短)
Interval i
1: 0 0.000000e+00
2: 1 0.000000e+00
3: 2 0.000000e+00
4: 3 0.000000e+00
5: 4 0.000000e+00
6: 5 0.000000e+00
7: 6 0.000000e+00
8: 7 0.000000e+00
9: 8 3.278689e-05
也没有错误或警告。
因此,我没有得到名为“1999”、“2000”、“2001”.... 的 17 列填充 mean_Exports 数据,而是只得到一个名为 i!
有什么帮助吗?
【问题讨论】:
-
问题在于当名称
i被评估时,R 使用惰性 eval,如果你想以编程方式命名,你将需要使用 eval(i) := STUFF .但是,在您当前的代码中,无论如何您都将继续覆盖,因为您每次都在总结 mean_exp_TOD
标签: r for-loop data.table