0

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

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

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)

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

有人有什么主意吗?

来自德国的亲切问候

4

4 回答 4

2

如果 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"])
于 2012-09-06T06:42:25.060 回答
1

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

plot(J) 

将照常工作

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

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

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

于 2012-09-06T06:43:53.093 回答
1
plot(J[,1], J[,2])

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

两者都工作

于 2012-09-06T06:44:17.760 回答
0

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

plot(J[ , colnames(J) %in% c("a", "b")])
于 2012-09-06T06:46:40.040 回答