У меня огромный массив данных, чьи имена переменных / столбцов начинаются с числа, такого как `1_variable`.Сейчас я пытаюсь создать функцию, которая может принимать имена столбцов в качестве аргументов, чтобы затем построить несколько коробочных диаграмм с помощью ggplot.Однако мне нужна строка, но также необходимо использовать ее ввод с ``, чтобы использовать аргументы в ggplot.Однако я не уверен, как экранировать символьную строку, такую как «1_variable», чтобы дать ggplot ввод «1_variable».
маленький воспроизводимый пример:
dfx = data.frame(`1ev`=c(rep(1,5), rep(2,5)), `2ev`=sample(10:99, 10),
`3ev`=10:1, check.names = FALSE)
Если бы я рисовал фигуру вручную, ввод был бы похож на это:
dfx$`1ev` <- as.factor(dfx$`1ev`)
ggplot(dfx, aes(x = `1ev`, y = `2ev`))+
geom_boxplot()
функция, которую я хотел бычтобы иметь возможность работать для фрейма данных это:
plot_boxplot <- function(data, group, value){
data = data[c(group, value)]
data[,group] = as.factor(data[,group])
plot <- ggplot(data, aes(x = group, y = value))+
geom_boxplot()
return(plot)
}
1.Попробуйте
plot_boxplot(dfx, `1ev`, `2ev`)
, который дает мне ошибку, говорящую Error in [.data.frame(data, c(group, value)) : object '1ev' not found
2.Попытка
ввода аргументов с двойными кавычками "" неожиданно дает мне следующее:
plot_boxplot(dfx, "1ev", "2ev")

3.Попробуйте Я также пытался заменить двойные кавычки строки на gsub
в функции
gsub('\"', '`', group)
, но это ничего не меняет при выводе.
4.Попробуйте
, наконец, я также попытался использовать aes_string
, но это просто дает мне те же ошибки.
plot_boxplot <- function(data, group, value){
data = data[c(as.character(group), as.character(value))]
data[,group] = as.factor(data[,group])
plot <- ggplot(data, aes_string(x= group, y=value))+
geom_boxplot()
return(plot)
}
plot_boxplot(dfx, `1ev`, `2ev`)
plot_boxplot(dfx, "1ev", "2ev")
В идеале я хотел бы запустить функцию для получения этого вывода:
plot_boxplot(dfx, group = "1ev", value = "2ev")

[можно получить с помощью этого кодавручную]
ggplot(dfx, aes(x= `1ev`, y=`2ev`)) +
geom_boxplot()
Любая помощь будет принята с благодарностью.