有没有办法在 R 中使用应用函数来创建条形图ggplot2?
说,我们有一个数据框,只包含因子变量,其中一个是布尔变量。就我而言,我有一个带有 +40 个变量的日期框架。可以用一行代码将所有变量与布尔变量进行对比吗?
data("diamonds")
factors <- sapply(diamonds, function(x) is.factor(x))
factors_only <- diamonds[,factors]
factors_only$binary <- sample(c(1, 0), length(factors_only), replace=TRUE)
factors_only$binary <- as.factor(factors_only$binary)
Run Code Online (Sandbox Code Playgroud)
但我想创建这样的条形图:
qplot(factors_only$color, data=factors_only, geom="bar", fill=factors_only$binary)
Run Code Online (Sandbox Code Playgroud)
这不起作用:
sapply(factors_only,function(x) qplot(x, data=factors_only, geom="bar", fill=binary))
Run Code Online (Sandbox Code Playgroud)
请指教
您可以使用lapply遍历变量名称,然后使用get来拉出当前变量。
temp <- lapply(names(factors_only),
function(x) qplot(get(x), data=factors_only, geom="bar", fill=binary, xlab=x))
Run Code Online (Sandbox Code Playgroud)
要打印列表项,
print(temp[[1]])
Run Code Online (Sandbox Code Playgroud)
会产生
遍历变量名的一个很好的功能是您可以使用它们来动态命名图中的标签。