ggplot和dplyr以及列名作为字符串

用户名

我想通过处理数据帧dplyrggplot在字符串的形式使用列名。这是我的代码

library(ggplot2)
library(dplyr)
my_df <- data.frame(var_1 = sample(c('a', 'b', 'c'), 1000, replace = TRUE),
                    var_2 = sample(c('d', 'e', 'f'), 1000, replace = TRUE))

name_list = c('var_1', 'var_2')

for(el in name_list){
  pdf(paste(el, '.pdf', sep =''))
    test <- my_df %>% group_by(el) %>% summarize(count = n())
    ggplot(data = test, aes(x = el, y = count)) + geom_bar(stat='identity')
  dev.off()
}

上面的代码显然不起作用。因此,我尝试了诸如UQ和的其他操作as.nameUQ创建带有额外引号的列,而ggplot用则无法理解aes_string有什么建议么?

我可以使用for (el in names(my_df))过滤,但更喜欢使用字符串。

更新这里是我得到的详细消息/错误:

for(el in name_list){
  pdf(paste(el, '.pdf', sep =''))
    test <- my_df %>% group_by(!!el) %>% summarize(count = n())
    ggplot(data = test, aes_string(x = el, y = 'count')) + geom_bar(stat='identity')
  dev.off()
}

上面的代码生成空文件。

for(el in name_list){
  pdf(paste(el, '.pdf', sep =''))
    test <- my_df %>% group_by(UQ(el)) %>% summarize(count = n())
    ggplot(data = test, aes_string(x = el, y = 'count')) + geom_bar(stat='identity')
  dev.off()
}

上面的代码还生成空文件

for(el in name_list){
  pdf(paste(el, '.pdf', sep =''))
    test <- my_df %>% group_by(as.name(el)) %>% summarize(count = n())
    ggplot(data = test, aes_string(x = el, y = 'count')) + geom_bar(stat='identity')
  dev.off()
}

产生

Error in mutate_impl(.data, dots) : 
  Column `as.name(el)` is of unsupported type symbol
弗里克先生

您需要UQ(或!!)名称/符号。例如

for(el in name_list){
  pdf(paste(el, '.pdf', sep =''))
  test <- my_df %>% group_by(UQ(as.name(el))) %>% summarize(count = n())
  print(ggplot(data = test, aes_string(x = el, y = 'count')) + geom_bar(stat='identity'))
  dev.off()
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用dplyr以新列名作为字符串重命名选定的列

在dplyr的重命名功能中输入新的列名作为字符串

如何使用整洁的评估与列名作为字符串?

使用列名作为要替换的字符串值执行字符串替换

大熊猫以新的列名作为字符串分配

LINQ-使用列名作为字符串参数访问列

如何使用列名作为字符串的数据框在python中制作稀疏矩阵

我不希望列名作为不同字母的字符串

在包装函数中使用 dplyr 将变量名作为字符串返回

在if_else和df $中使用rlang提供变量名作为字符串

如何使用类名和函数名作为字符串调用Scala函数

将表名和字段名作为字符串传递给函数

PostgreSQL使用变量名作为字符串文字

将变量名作为字符串获取

将变量名作为字符串获取

Java获取变量名作为字符串

如何获得具体的类名作为字符串?

获取JSON动态键名作为字符串?

如何获取类名作为字符串?

从元素获取单个类名作为字符串

表名作为sql字符串中的变量

ggplot:如何使用列名作为 x 轴标签和值作为 y 轴

将字符串参数传递给函数作为dplyr中的数据框列名称

R,使用dplyr :: filter()和%in%将列名作为参数传递给函数

如何使用列名(字符串)作为输入在R函数内部制作ggplot2图?

将列名作为变量传递/循环到 data.table 和 ggplot

dplyr字符串作为列引用

获取作为函数参数的变量名作为字符串

dplyr-使用列名作为函数参数