Я хочу сделать то, что кажется простым применением 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)]
Ни то, ни другое не работает. Я думаю, что первое близко. Я надеюсь, что кто-то может указать на недостатки в моей логике без создания воспроизводимого примера.