【发布时间】:2020-09-12 04:45:25
【问题描述】:
我的数据如下:
DF <- structure(list(No_Adjusted_Gross_Income = c(183454, 241199, 249506
), NoR_from_1_to_5000 = c(1035373, 4272260, 1124098), NoR_from_5000_to_10000 = c(319540,
4826042, 1959866)), row.names = c(NA, -3L), class = c("data.table",
"data.frame"))
val <- c(2500.5, 7500)
vn <- c("AGI_from_1_to_5000", "AGI_from_5000_to_10000")
No_Adjusted_Gross_Income NoR_from_1_to_5000 NoR_from_5000_to_10000
1: 183454 1035373 319540
2: 241199 4272260 4826042
3: 249506 1124098 1959866
我想创建新列,基于第 2 列和第 3 列,乘以 val 中的值,使用 vn 中的名称。我尝试这样做:
DF[,2:3] <- lapply(DF[,2:3], vn := val*DF[,2:3])
但这不起作用..
期望的输出:
DF <- setDT(DF)[, vn[1]:=val[1]*DF[,2]]
DF <- setDT(DF)[, vn[2]:=val[2]*DF[,3]]
DFout <- structure(list(No_Adjusted_Gross_Income = c(183454, 241199, 249506
), NoR_from_1_to_5000 = c(1035373, 4272260, 1124098), NoR_from_5000_to_10000 = c(319540,
4826042, 1959866), AGI_from_1_to_5000 = c(2588950186.5, 10682786130,
2810807049), AGI_from_5000_to_10000 = c(2396550000, 36195315000,
14698995000)), row.names = c(NA, -3L), class = c("data.table",
"data.frame"))
No_Adjusted_Gross_Income NoR_from_1_to_5000 NoR_from_5000_to_10000 AGI_from_1_to_5000 AGI_from_5000_to_10000
1: 183454 1035373 319540 2588950187 2396550000
2: 241199 4272260 4826042 10682786130 36195315000
3: 249506 1124098 1959866 2810807049 14698995000
【问题讨论】:
-
你如何计算
AGI_from_5000_to_10000列?对我来说 319540 * 7500 = 2396550000 -
vn在您的代码中定义在哪里? -
两个都是错别字,我很抱歉。现在应该是正确的。
标签: r data.table lapply