【问题标题】:How to plot values from atomic vectors (matrix) in R如何在 R 中绘制原子向量(矩阵)的值
【发布时间】:2012-09-06 06:38:37
【问题描述】:

我在绘制和访问我创建的以下矩阵时遇到问题。

在这里,我创建了一个没有我的数据的人都可以关注的版本。

a<-rnorm(10,0,1)
b<-rnorm(10,2,1)


J<-matrix(0,10,2)
colnames(J)<-c("a","b")
J[,1]<-a
J[,2]<-b

然后想出谋划策。但我收到了我不明白的错误消息:

with(J,plot(a,b))

+eval(substitute(expr), data, enclos = parent.frame()) 中的错误: + numeric 'envir' arg 长度不是 1

plot(J$a,J$b)

+情节(J$a,J$b) +J$a 中的错误:$ 运算符对原子向量无效

有人知道吗?

德国的亲切问候

【问题讨论】:

  • 应该(J,plot(a,b)) 行真的说with(J, plot(a,b))(这仍然是不正确的)
  • 是的。它应该。我尝试了两个版本。 1. with(J, plot(a,b)) 2. plot(J$a,J$b) 我没有意识到它不适用于矩阵我从 M.Crawley 的 The R 书中举了一个例子。但是从未注意到它必须是 data.frames。
  • 已解决:我现在只添加了:J1
  • 如果答案是有用的,那么SO etiquette 会为有用的答案投票并接受最能回答您问题的答案

标签: r plot


【解决方案1】:

如果 J 被定义为 data.frame,包含 a 和 b 列,它会起作用:

a<-rnorm(10,0,1)
b<-rnorm(10,2,1)

J <- data.frame(a,b)
with(J,plot(a,b))

$ 仅适用于列表对象(包括 data.frame)。如果您坚持使用矩阵,那么您可以使用带有索引或名称的括号从列中抓取:

J <- cbind(a,b)
plot(J,[,1],J[,2])
plot(J[,"a"],J[,"b"])

【讨论】:

    【解决方案2】:

    在您的情况下,您是否有一个 2 列矩阵 J

    plot(J) 
    

    可以正常工作

     plot(J[,'a'], J[,'b'])
    

    `$` 运算符不是为矩阵定义的,而是为listsdata.frames 定义的

    with 不适用于矩阵,因为矩阵不能是环境或外壳

    【讨论】:

      【解决方案3】:
      plot(J[,1], J[,2])
      

      with(as.data.frame(J), plot(a,b))
      

      两者都有效

      【讨论】:

      • 这确实有我真正真正想到的。
      【解决方案4】:

      如果您想通过名称访问矩阵的列:

      plot(J[ , colnames(J) %in% c("a", "b")])
      

      【讨论】:

        猜你喜欢
        • 2017-09-16
        • 1970-01-01
        • 2019-10-31
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2018-12-05
        相关资源
        最近更新 更多