我喜欢为特定行子集在data.table中分配多个新变量。新的变量名称以字符变量形式给出。我尝试了几件事,但没有成功:
DT <- as.data.table(iris)
row.filter.var <- "Species"
new.var.name1 <- "new1"
new.var.name2 < "new2"
var1 <- "Sepal.Length"
var2 <- "Petal.Width"
# Try 1:
# Works, but new variable names are new.var.name1 and not "new1" etc
DT <-
DT[get(row.filter.var) == "setosa", `:=`(new.var.name1 = get(var1) / Sepal.Width,
new.var.name2 = get(var2) + get(var1))]
# Try 2: With eval (gives an error)
DT <- DT[get(row.filter.var) == "setosa", `:=`(eval(new.var.name1) = get(var1) / Sepal.Width,
eval(new.var.name2) = get(var2) + get(var1))]
# Try 3: With () (does not work)
DT <- DT[get(row.filter.var) == "setosa", `:=`((new.var.name1) = get(var1) / Sepal.Width,
(new.var.name2) = get(var2) + get(var1))]
# Try 4 with get
DT <- DT[get(row.filter.var) == "setosa", `:=`(get(new.var.name1) = get(var1) / Sepal.Width,
get(new.var.name2) = get(var2) + get(var1))]
# Try 5 with = FALSE
DT <- DT[get(row.filter.var) == "setosa", `:=`(new.var.name1 = var1 / "Sepal.Width",
new.var.name2 = var2 + var1), with = FALSE]