我有一个带有许多数字和分类变量的数据框。
data <- data.frame(dep_var = ...,
cat1 = ...,
cat2 = ...,
...
num1 = ...,
num2 = ...,
...)
如果我选择一个数字特征,则可以将其相对于因变量(由分类变量组成)进行绘制(忽略图例占据页面一半的事实-我正在对集群进行高级查找)
cat_cols <- c("cat1", "cat2",... , "cat6")
data %>% select(dep_var, var1, cat_cols) %>%
gather(category, value, -c(dep_var, var1)) %>%
ggplot(aes(x=var1, y=dep_var))+
facet_wrap(~ category) + geom_point(aes(color=value))
但是,如果我尝试将其包装到函数中并套用,则绘图将无法以相同的方式工作:
num_cols <- ("num1", "num2", "num3",...)
lapply(names(data[num_cols]),
function(x) {
data %>% select(dep_var, x, cat_cols) %>%
gather(category, value, -c(dep_var, x)) %>%
ggplot(aes(x=x, y=dep_var))+
facet_wrap(~ category) + geom_point(aes(color=value))
})
对于我拥有的每个数字变量,都有一种绘图类型。我在快活中想念什么?
答案 0 :(得分:0)
在aes调用中使用get()函数将字符串转换回“裸名”即可解决问题:
lapply(names(data[num_cols]),
function(x) {
data %>% select(dep_var, x, cat_cols) %>%
gather(category, value, -c(dep_var, x)) %>%
ggplot(aes(x=get(x), y=dep_var))+ //Fix here with get() function
facet_wrap(~ category) + geom_point(aes(color=value))
})