我希望在数据表中使用mapply进行简单的应用。我想要将一系列数据表列乘以另一列中的值。这是我的函数。y是要将其他列的值乘以其值的单个列。xIn是要执行此操作的列名称。
f.xRatio <- function(xIn, y) {return(y * (xIn + 1)/(xIn - 1))}
我有一个数据表,其中有一列名为GDPratio,还有一些名字像x.food1、x.food2这样的列。我将这些列名存储在名为x的变量中。
x <- paste0("x.", foodNames)
我使用该函数创建的新列的名称创建另一个变量。
xRatio <- paste0("xRatio.", foodNames)
以下是我使用mapply创建xRatio列的两个版本。
dt[, (xRatio) := mapply(FUN = f.xRatio, xIn = .SD, y = GDPRatio), .SDcols = (x)]
dt[, (xRatio) := mapply(FUN = f.xRatio, xIn = .(x), y = GDPRatio)]
两者都不起作用。我认为第一个接近正确。希望有人能在我创建可重现示例之前指出我的逻辑缺陷。
(xRatio) := lapply(.SD, f.xRatio, y = GDPRatio), .SDcols = xRatio
?我不会发布答案,因为我当然无法测试并验证这是否有效。 - Franky = list(GDPRatio)
。 - akrun