自定义绘图功能找不到现有列

旋转木马

我写了一个快速函数来绘制一些人口统计信息,但是它无法识别我选择的变量。我知道这poverty_rate是我数据框中的一列,当我这样做时会显示出来,names(df)并且在以前的代码块中已经使用过它。是的,当我运行下面的函数时,我得到了Error in mean(demog, na.rm = TRUE) : object 'poverty_rate' not found我究竟做错了什么?

dense_plot_demos <- function(df, id_list, demog, color_id, demo_name, qual) {
  df %>%
  filter(GEOID %in% id_list) %>%
  group_by(GEOID) %>%
  mutate(avg_var = mean(demog, na.rm=TRUE)) %>%
  ggplot(aes(x=avg_var)) + 
  geom_histogram(aes(y=..density..), color="black", fill="white", bins=20) + 
  geom_density(alpha=.5, fill=color_id) + 
  theme_bw() + 
  xlab(demo_name) + 
  ylab("Density") + 
  theme(plot.title = element_text(hjust = 0.5)) +
  labs(title = paste(demo_name, "in", qual, "Filing Counties"))
}
top_pov <- dense_plot_demos(df, top_ids, poverty_rate, color_pal[1], "Poverty Rate", "Highest")

ETA:谢谢您的所有建议和资源。我发现以下代码对我的函数进行了最小的修改:

dense_plot_demos <- function(df, id_list, demog, color_id, demo_name, qual) {
  demog <- sym(demog)
  df %>%
  filter(GEOID %in% id_list) %>%
  group_by(GEOID) %>%
  mutate(avg = (mean(!! demog, na.rm=TRUE))) %>%
  ggplot(aes(x=avg)) + 
  geom_histogram(aes(y=..density..), color="black", fill="white", bins=20) + 
  geom_density(alpha=.5, fill=color_id) + 
  theme_bw() + 
  xlab(demo_name) + 
  ylab("Density") + 
  theme(plot.title = element_text(hjust = 0.5)) +
  labs(title = paste(demo_name, "in", qual, "Filing Counties"))
}

top_pov <- dense_plot_demos(ecplot, top_lists, "poverty_rate", color_pal[1], "Poverty Rate", "Highest")
笨狼

您好carousallie,@ camille,@ ravic_的建议可以解决您的问题。要点是要mean(demog, na.rm=TRUE)正确评估对于您编写的代码,可以通过创建一个称为demog的虚拟列来快速解决,该伪列是demog变量的副本:

dense_plot_demos <- function(df, id_list, demog, color_id, demo_name, qual) {

  #add this line
  df$demog <- df[,demog]
  df %>%
  filter(GEOID %in% id_list) %>%
  group_by(GEOID) %>%
  mutate(avg_var = mean(demog, na.rm=TRUE)) %>%
  ggplot(aes(x=avg_var)) + 
  geom_histogram(aes(y=..density..), color="black", fill="white", bins=20) + 
  geom_density(alpha=.5, fill=color_id) + 
  theme_bw() + 
  xlab(demo_name) + 
  ylab("Density") + 
  theme(plot.title = element_text(hjust = 0.5)) +
  labs(title = paste(demo_name, "in", qual, "Filing Counties"))
}

#simulate data
set.seed(100)
df <- data.frame(
GEOID = sample(letters,300,replace=TRUE),
poverty_rate = rnorm(300)
)
# some values for your other input
top_ids = letters[1:10]
color_pal = "lightblue"
# plot, this works
# note use "poverty_rate" as demog
top_pov <- dense_plot_demos(df, top_ids, 
"poverty_rate", color_pal[1], "Poverty Rate", "Highest")

上面的方法是有效的,因为您的数据帧中没有称为“ demog”的列(我希望如此),因此您的后续代码功能类似于普通代码。

如果您想真正使它在没有虚拟道具的情况下工作,则将mutate部分更改为:

mutate(avg_var=eval(parse(text=paste("mean(",demog,",na.rm=TRUE)"))))

很可能看起来不像你的情节大声笑

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WordPress找不到自定义评论功能

来自分类Dev

R:自定义函数-更改现有列

来自分类Dev

Rspec找不到自定义模块

来自分类Dev

NLog找不到自定义目标?

来自分类Dev

找不到自定义包

来自分类Dev

找不到自定义字段

来自分类Dev

NodeJS找不到自定义模块

来自分类Dev

自定义委托找不到声明

来自分类Dev

找不到自定义ControllerProvider类

来自分类Dev

CMake在Windows的自定义位置上找不到增强功能

来自分类Dev

找不到Google Spreadsheet自定义菜单返回的脚本功能

来自分类Dev

VSTO 4.0该程序中的自定义功能将无法使用,因为找不到文件

来自分类Dev

为什么sbt找不到带有build.scala构建定义的自定义命令?

来自分类Dev

igraph / R中的自定义节点绘图功能

来自分类Dev

使用现有的Devise用户/编辑功能更新自定义用户属性

来自分类Dev

R 3.5.2:自定义函数中的管道-找不到对象“列”

来自分类Dev

Android Studio找不到带有自定义gradle配置进行测试的主题

来自分类Dev

没有这样的食谱-OpsWorks找不到自定义食谱

来自分类Dev

在Postgresql中找不到带有Psycopg2的自定义类型

来自分类Dev

编译错误:找不到具有自定义属性的符号FragmentBindingImpl

来自分类Dev

Rails 4自定义控制器操作错误-“没有ID找不到'模型'”

来自分类Dev

没有ID找不到[模型]:Rails 4自定义控制器操作

来自分类Dev

找不到定义的功能

来自分类Dev

Gtk2Hs:找不到现有功能

来自分类Dev

如何指定自定义列和现有列的顺序

来自分类Dev

映射列并应用自定义功能

来自分类Dev

Power Bi自定义列功能

来自分类Dev

找不到Laravel 5自定义包类

来自分类Dev

找不到阔叶自定义文件页面

Related 相关文章

热门标签

归档