我的数据类似于以下内容:
a <- list("1999"=c(1:50), "2000"=rep(35, 20), "2001"=c(100, 101, 103))
我想制作一个散点图,其中x轴是年份(1999,2000,2001,由列表名称给出),y轴是每个列表中的值。是否有捷径可寻?我可以通过一个简单的boxplot(a)
来实现我想要的东西,但我希望它是一个散点图而不是一个箱形图。
答案 0 :(得分:2)
这将做你想要的事情
do.call(rbind,
lapply(names(a), function(year) data.frame(year = year, obs = a[[year]]))
)
或者将其分解为两个函数调用(lapply
然后do.call
),以使其更容易理解正在发生的事情。如果你经历它,这很简单。 lapply
每年创建一个数据框,其中每年获取列表中该年份的所有值。现在你有3个数据帧。然后do.call
将这些数据框绑定在一起。
答案 1 :(得分:2)
您可以创建一个数据框,其中年份在一列中,而值在另一列中,然后您可以绘制相应的列:
b <- data.frame(year=as.numeric(rep(names(a), sapply(a, length))), val=unlist(a))
plot(b)
答案 2 :(得分:0)
使用tidyr/dplyr/ggplot2
library(ggplot2)
library(tidyr)
library(dplyr)
unnest(a, year) %>%
ggplot(., aes(x=year, y=x)) +
geom_point(shape=1)