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()) のエラー: + 長さ 1 でない数値の 'envir' 引数

plot(J$a,J$b)

+plot(J$a,J$b) +J$a のエラー: $ 演算子は原子ベクトルに対して無効です

誰にもアイデアはありますか?

GERからのよろしく

4

4 に答える 4

2

Jが列aとbを持つdata.frameとして定義されている場合は、機能します。

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'])

`$`演算子は行列に対して定義されていませんが、listsorに対して定義されていますdata.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 に答える