R:列表中的散点图

时间:2015-06-02 17:40:21

标签: r list plot scatter

我的数据类似于以下内容:

a <- list("1999"=c(1:50), "2000"=rep(35, 20), "2001"=c(100, 101, 103))

我想制作一个散点图,其中x轴是年份(1999,2000,2001,由列表名称给出),y轴是每个列表中的值。是否有捷径可寻?我可以通过一个简单的boxplot(a)来实现我想要的东西,但我希望它是一个散点图而不是一个箱形图。

3 个答案:

答案 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)

enter image description here

答案 2 :(得分:0)

使用tidyr/dplyr/ggplot2

的选项
library(ggplot2)
library(tidyr)
library(dplyr)
unnest(a, year) %>%
             ggplot(., aes(x=year, y=x)) +
                    geom_point(shape=1)