【问题标题】:Plot data from lists in R从 R 中的列表中绘制数据
【发布时间】:2015-09-30 19:44:34
【问题描述】:

这就是问题所在。我有两个向量列表,已排序(我希望,但如果它们不是,我可以对它们进行排序),其中第一个列表中的第 i 个向量的数字与第二个列表中的第 i 个向量一样多。我只是想绘制它们。但我担心 R 不能绘制列表的元素。任何想法如何解决这个问题?多谢。这是我尝试过的代码。

a<-c(2,1,5)
b<-c(2,2,2)
f<-c(4)
g<-c(1)
k<-list(a,f)
l<-list(b,g)
for(i in 1:2){
plot(l[i],k[i])}

问题是

xy.coords(x, y, xlabel, ylabel, log) 中的错误: (list) 对象不能被强制输入'double'

【问题讨论】:

    标签: r list plot


    【解决方案1】:

    最好的方法是避免使用for-loop 并取消列出列表以便绘制它们。

    这是一种使用unlist的方式:

    plot(unlist(l),unlist(k))
    

    使用for-loop 的方法如下:

    for (i in 1:2) {
      par(new=T)
      plot(l[[i]], k[[i]], xlim=c(0,2), ylim=c(0,5))
    }
    

    但这完全没有必要,因为您只需取消列出即可获得相同的结果。您还必须使用 par(new=T) 以便第二个(或任何其他)图不会覆盖以前的图,并且您必须指定 x 和 y 限制,以便两个图具有相同的比例。此外,您必须使用方括号[[]],正如@HubertL 在他的回答中提到的那样才能访问列表。结果将与上面相同(标签以更粗的格式显示,因为标签将在彼此顶部绘制两次)。

    【讨论】:

      【解决方案2】:

      你可以尝试使用双括号[[]]:

      plot(l[[i]],k[[i]])
      

      【讨论】:

        【解决方案3】:

        几乎就在那里,就像@HubertL,只有两个括号

        a<-c(2,1,5)
        b<-c(2,2,2)
        f<-c(4)
        g<-c(1)
        k<-list(a,f)
        l<-list(b,g)
        for(i in 1:2){
        plot(l[[i]],k[[i]])
        }
        

        【讨论】:

          猜你喜欢
          • 2021-12-27
          • 2018-08-01
          • 1970-01-01
          • 2018-08-29
          • 1970-01-01
          • 2011-11-04
          • 2020-10-16
          • 2021-12-07
          • 1970-01-01
          相关资源
          最近更新 更多