21

foo.csv次のデータを含む名前のカンマ区切りファイルがあります。

scale, serial, spawn, for, worker
5, 0.000178, 0.000288, 0.000292, 0.000300
10, 0.156986, 0.297926, 0.064509, 0.066297
12, 2.658998, 6.059502, 0.912733, 0.923606
15, 188.023411, 719.463264, 164.111459, 161.687982

基本的に2つの質問があります。

1) 最初の列 (x 軸) と 2 番目の列 (y 軸) をプロットするにはどうすればよいですか? 私はこれを試しています(このサイトを読んでから):

data <- read.table("foo.csv", header=T,sep=",")
attach(data)
scale <- data[1]
serial <- data[2]
plot(scale,serial)

しかし、私はこのエラーを返します:

Error in stripchart.default(x1, ...) : invalid plotting method

私が間違っていることは何か分かりますか?Google で簡単に検索すると、同じ問題を抱えているが関連する回答がない人が他にいることがわかります。更新:途中の2つの割り当てステートメントをスキップすると、うまく機能することがわかりました。これはなぜですか?

2 番目の質問は、最初の質問の後に非常に簡単に続きます。

2) 最初の列 (x 軸) と他のすべての列を y 軸にプロットするにはどうすればよいですか? 最初に遭遇した問題を回避できれば、かなり簡単だと思いますが、R にはまだ慣れていないので、まだ頭を悩ませています。

4

7 に答える 7

14

2行は必要ありません。

scale <- data[1]
serial <- data[2]

スケールとシリアルは、のヘッダーからすでに設定されているためread.tableです。

またscale <- data[1]、から要素を作成しますdata.frame

  data[1]
1     5
2    10
3    12
4    15

一方、scaleからread.tableはベクトルです

5 10 12 15

plot(scale, serial)関数はdata.frameではなくvectorを期待しているので、次のことを行う必要があります。

plot(scale, serial)

データの他の列をy軸にプロットする1つのアプローチ:

plot(scale,serial, ylab="")
par(new=TRUE) 
plot(scale,spawn,axes=F, ylab="", type="b")
par(new=TRUE) 
plot(scale,for., axes=F, ylab="", type="b")
par(new=TRUE) 
plot(scale,worker,axes=F, ylab="", type="b")

これを行うにはおそらくもっと良い方法がありますが、それは私の現在のRの知識を超えています。

于 2009-05-18T09:25:08.140 に答える
7

あなたの例では、

plot(scale, serial) 

scaleserialが両方ともデータ フレームであるため、機能しません。

class(scale)
[1] "data.frame"

points()プロットが生成されたら、次を試して を使用して、残りの列をプロットできます。3 番目の列の範囲に対応するために、ylimパラメーターを使用したことに注意してください。plot

data <- read.csv('foo.csv', header=T)
plot(data$scale, data$serial, ylim=c(0,750))
points(data$scale, data$spawn, col='red')
points(data$scale, data$for., col='green')
points(data$scale, data$worker, col='blue')
于 2009-07-22T02:44:39.433 に答える
5
于 2009-06-14T17:36:56.153 に答える
2

これを試して:

data <- read.csv('foo.csv')
plot(serial ~ scale, data)
dev.new()
plot(spawn ~ scale, data)
dev.new()
plot(for. ~ scale, data)
dev.new()
plot(worker ~ scale, data)
于 2009-05-18T09:55:31.510 に答える
2

私は R の専門家ではありませんが、data.frame が必要だと思います。

plot(data.frame(data[1],data[2]))

それは少なくとも私のRセットアップで何かをプロットします!

luapyad's answer のアドバイスに従って、私はこれを思いつきました。ヘッダーの名前を「スケール」に変更しました。

scaling, serial, spawn, for, worker
5, 0.000178, 0.000288, 0.000292, 0.000300
10, 0.156986, 0.297926, 0.064509, 0.066297
12, 2.658998, 6.059502, 0.912733, 0.923606
15, 188.023411, 719.463264, 164.111459, 161.687982

それから:

foo <- read.table("foo.csv", header=T,sep=",")
attach(foo)
plot( scaling, serial );
于 2009-05-18T08:56:02.270 に答える
0
data <- read.table(...)
plot(data$scale,data$serial)
于 2013-11-02T00:39:41.870 に答える
0

それをプロットする簡単な方法があります:

https://code.google.com/p/simple-r/

そのスクリプトを使用すると、次のように入力するだけです。

r -cdps, -k1:2 foo.csv

必要なプロットを取得するには。詳細モード (-v) にすると、対応する R スクリプトが表示されます。

于 2013-10-01T04:26:39.507 に答える