【发布时间】:2018-12-16 10:42:06
【问题描述】:
我正在尝试从如下所示的列表中绘制一些图表:
rs1 <- data.frame(c("A1", "A2", "A3", "A4", "A5"), runif(5), runif(5), runif(5))
names(rs1) <- c("column", 2007, 2008, 2009)
rownames(rs1) <- rs1$column
rs1 <- rs1[2:4]
rs2 <- data.frame(c("A1", "A2", "A3", "A4", "A5"), runif(5), runif(5), runif(5))
names(rs2) <- c("column", 2007,2008,2009)
rownames(rs2) <- rs2$column
rs2 <- rs2[2:4]
l1 <- list(rs1, rs2)
names(l1) <- c("CompanyA", "CompanyB")
l1
$CompanyA
2007 2008 2009
A1 0.6486099 0.5310441 0.7095210
A2 0.3881914 0.2394723 0.6997068
A3 0.4295121 0.6618062 0.2725275
A4 0.6548886 0.3708362 0.3510994
A5 0.3825162 0.7545498 0.3470293
$CompanyB
2007 2008 2009
A1 0.96786369 0.95582327 0.12709719
A2 0.69906099 0.22706448 0.47463029
A3 0.67795904 0.07207512 0.07862240
A4 0.09535442 0.74312544 0.19818115
A5 0.36331461 0.98673541 0.07754267
我想为列表中的每个项目(即每个公司)绘制如下图,例如公司 A 的图如下所示:
compA <- l1[['CompanyA']]
compA <- as.data.frame(t(compA))
compA$year <- rownames(compA)
compA <- melt(compA, id.vars=c("year"))
ggplot(compA, aes(x=as.numeric(year), y=value, color=variable)) + geom_line()
现在我可以创建一个 for 循环来遍历列表的每个元素并创建如上图。但是,我的实际数据集有数千家公司,因此我理想情况下希望创建一个数据集,该数据集可用于为每个公司绘制上述所需数据。
任何帮助表示赞赏。
编辑: 我有以下几点:
main.df <- data.frame()
for (nm in names(l1)){
df <- l1[[nm]]
df <- as.data.frame(t(df))
df$year <- rownames(df)
df <- melt(df, id.vars=c("year"))
df$Company <- nm
main.df <- rbind(df, main.df)
}
ggplot(data = main.df) +
geom_smooth(mapping = aes(x=as.numeric(year), y = value, color = variable))
但是我在绘图时遇到这些错误:
predLoess(object$y, object$x, newx = if (is.null(newdata)) object$x else if (is.data.frame(newdata)) 中的警告 as.matrix(model.frame(delete.response(terms(object)), : 还有其他近奇点。 1.0201
任何帮助表示赞赏
【问题讨论】: