【发布时间】:2020-05-15 22:38:36
【问题描述】:
我在 R 中有一个数据框 df。(我们可以使用 iris 的示例。)我也有简单的 iris 转换:
iris0 <- iris
iris1 <- cbind(log(iris[,1:4]),iris[5])
iris2 <- cbind(sqrt(iris[,1:4]),iris[5])
我想为这三个数据集中的每一个创建一个列表对象,其中包含iris 中所有数字属性的密度分布。 (因此,3 个数据集的每一个共有 4 个属性:一个列表对象中有 12 个密度图。)我希望给定数据集(每个属性)的密度都是单一颜色,即颜色应该完全取决于数据集。仅使用 base R,我认为 Map 将是最好的方法:
datasets=c("iris0","iris1","iris2")
Map(function(.x, .y, df) {
ggplot(data = get(df), aes(x=.x)) +
geom_density(aes(fill=df)) + xlab(.y) + ggtitle(label=paste0(.y," Density in ",df," dataset"))}, df[names(df)], names(df), as.character(datasets) )
这似乎遇到了错误,Error in get(df) : object 'df' not found。我还尝试将df[names(df)] 和names(df) 与get 包裹在每个df 周围,但错误仍然存在。
我还可以看到其他潜在的问题——我不确定fill=df 是否会正确地将数据帧编码为一个因素,并确保它们每个都是单独的唯一颜色(但每个颜色保持相同)所有属性)。
谁能帮忙解决这个问题?
(我想在不使用基本 R + ggplot2 和可能的 dplyr 之外的任何包的情况下这样做)
【问题讨论】: