r - 用 for 循环绘制 ggplot。应该如何引用变量?
问题描述
我正在尝试创建散点图,其中单个图显示每个预测变量与单个结果之间的关系。但是,结果无法正常显示。我认为这是因为 ggplot 函数没有将结果识别为列名。关于如何正确引用结果的任何建议?
# data
data <- data.frame(o1=rnorm(100, 3, sd=1.2),
o2=rnorm(100, 3.5, sd=1.4),
p1=rnorm(100, 2, sd=1.9),
p2=rnorm(100, 1, sd=1.2),
p3=rnorm(100, 7, sd=1.6)
)
func <- function(data, outcomes, predictors) {
for(i in seq_along(outcomes)){
print(data %>% select(outcomes[[i]], predictors[[i]]) %>%
gather(var, value, -outcomes[[i]]) %>%
ggplot(aes(x=value, y=outcomes[[i]])) + geom_point() + facet_wrap(~var))
}
}
func(data, outcomes=c("o1", "o2"), predictors=list(c("p1", "p2"), c("p2","p3")))
解决方案
您可以在没有循环的情况下尝试此操作:
data <- data.frame(o1=rnorm(100, 3, sd=1.2),
o2=rnorm(100, 3.5, sd=1.4),
p1=rnorm(100, 2, sd=1.9),
p2=rnorm(100, 1, sd=1.2),
p3=rnorm(100, 7, sd=1.6)
)
tidy_data <- data %>%
pivot_longer(c(p1:p3), names_to = "predictor", values_to = "x") %>%
pivot_longer(c(o1:o2), names_to = "outcome", values_to = "y")
ggplot(tidy_data) +
geom_point(aes(x = x,
y = y)) +
facet_grid(outcome~predictor)
推荐阅读
- visual-studio - Azure DevOps 构建任务:创建一个与 Visual Studio 发布内容相同的 zip
- mysql - 我如何制作表格以在每个表格中存储所有操作(创建-更新-删除)
- javascript - phph 在使用 ssl 时不会“实时更新”
- sql - 如何通过同时拥有标志 1 和 0 的人获取不同行的列表
- python - cloud composer-airflow 抛出错误:Broken DAG: cannot import name '_parse_data' when importing new dag
- angular - 角度更改表中 Ngfor 中的元素
- docker - 我怎样才能在我的终端中获得泊坞鲸?
- python - 如何从不同的数组中提取最佳种群?
- python - 我正在尝试将算术运算列表附加到另一个空列表中并返回列表
- javascript - Polymer3 中可以使用哪个表格元素?