как часть большей функции, мне нужно создать два новых столбца в data.table (который позже используется для создания графика).
это имена моих столбцов:
names(freqSevDataAge)
[1] "ag5" "claims" "exposure"
[7] "severity" "frequency"
Я пытаюсь заставить эту часть функции работать:
testDT <- function(data, xvar, yvar, yvarsec, groupvar, ...){
freqSevDataAge2 <- freqSevDataAge[!claims == 0][, ':=' (scaled = "yvarsec" * max("yvar")/max("yvarsec"),
param = max("yvar")/max("yvarsec"))]
}
testDT(freqSevDataAge, xvar = "ag5", yvar = "severity", yvarsec = "frequency", groupvar = "gender")
ошибка, которую я получаю:
Ошибка в "yvarse c" * max ("yvar"): не числовой c аргумент бинарного оператора
РЕДАКТИРОВАТЬ:
Предложенное решение с использованием get()
сработало, однако теперь у меня возникают проблемы с использованием столбца недавно созданного в ggplot. Я получаю ошибку:
Ошибка в f (...): объект 'param' не найден
Я проверил функцию шаг за шагом и знаю, что столбец param
создано, проблема вызывается в ggplot. Как я могу
getSecPlot <- function(data, xvar, yvar, yvarsec, groupvar, ...){
if ("agegroup" %in% xvar) xvar <- get("agegroup")
data <- data[!claims == 0][, ':=' (scaled = get(yvarsec) * max(get(yvar))/max(get(yvarsec)),
param = max(get(yvar))/max(get(yvarsec)))]
param <- unique(param)
sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
geom_line(aes(y = scaled, color = gender)) +
scale_y_continuous(sec.axis = sec_axis(~./(param),
name = paste0("average ", yvarsec), labels = function(x) format(x, big.mark = " ", scientific = FALSE))) +
labs(y = paste0("total ", yvar)) +
theme_pubclean()
}