我有一个数据框df。我需要绘制作为因素的变量。例如,这里是x,a和b
df
x y g a b
1 a 2 1 df df
2 a 3 2 fg fg
3 b 4 1 gf gf
4 b 5 2 fd fd
我在下面写了一个代码,但是我无法执行
as <- names(Filter(is.factor, df))
for(i in 1:length(as))
{
ssa <- ggplot(data=df,aes_string(x=as[i],fill=as[i]))+geom_bar(stat =
"count")
}
答案 0 :(得分:0)
对代码的直接修复是添加索引来存储对象。
library(ggplot2)
ssa <- vector("list", length(as))
for(i in 1:length(as)) {
ssa[[i]] <- ggplot(data=df,aes_string(x=as[i],fill=as[i])) +
geom_bar(stat = "count")
}
现在,您分别在ssa[[1]]
,ssa[[2]]
和ssa[[3]]
中拥有所有三个对象。
但是,有更好的方法可以执行相同的操作。您可以使用lapply
plot_obj <- lapply(df[as], function(x)
ggplot(data= df, aes(x, fill = x)) + geom_bar(stat = "count"))
或者在将数据收集为长格式后使用facets
。
tidyr::gather(df[as]) %>%
ggplot() + aes(value, fill = value) + geom_bar(stat = "count") +
facet_wrap(.~key)