1

私は R が初めてで、回帰分析を実行しようとしています。plot、lm、fit、abline、および summary 関数を学習するために、c() 関数を使用して任意のベクトルを作成しました。これは正常に機能しましたが、インポートしたデータを回帰しようとすると、次のエラー メッセージが表示されます。エラーの原因や修正方法がわかりません。何か考えはありますか?ありがとう。

library(xlsx)  
Loading required package: xlsxjars   
Loading required package: rJava    
x <- "~/Desktop/x.xlsx"    
y <- "~/Desktop/y.xlsx"   
X <- read.xlsx(x,1)  
Y <- read.xlsx(y,1)  
dim(X)  
[1] 149   1  
dim(Y)  
[1] 149   1  
plot(X,Y)  
Error in stripchart.default(x1, ...) : invalid plotting method  
plot(X)  
plot(Y)

また、 read.xlsx 関数で受け入れられるすべての引数を理解しているとは思いません。たとえば、sheetindex がシートのインデックスを作成することを意図している場合、この例では x が 1 で y が 2 ではないでしょうか? しかしその後:

X <- read.xlsx(x,1)  
Y <- read.xlsx(y,2)   
Error in sheets[[sheetIndex]] : subscript out of bounds

また、寸法が間違っています。.xlsx ファイルには 1 列、150 行があり、ヘッダーはありません。

dim(X)   
[1] 149   1

私が持っている.xlsxファイルの総数のb/cを特にしたくない.csvファイルに変換するとき、私はまだ同じプロットエラーを持っていますが、寸法は正しいようです. この例では、行数と列数はそれぞれ 1 と 150 のままですが、ヘッダーがあります。

x <- "~/Desktop/x.csv"   
y <- "~/Desktop/y.csv"   
X <- read.table(x, header = T)    
Y <- read.table(y, header = T)    
plot(X,Y)    
Error in stripchart.default(x1, ...) : invalid plotting method    
dim(X)   
[1] 150   1   
4

2 に答える 2

3

問題は、X と Y がデータ フレーム (詳細については) と呼ばれるオブジェクト?data.frameであり、ベクトルではないことです。プロット関数は、実際には他のオブジェクト固有のプロット関数のファミリのラッパーであり、この場合は を使用してプロットしようとしてstripchart()いるため、問題が発生しています。これにより問題が再現され、修正されます。

X=data.frame(x=1:100)
Y=data.frame(y=rnorm(100,mean=1:100,sd=5))
plot(X,Y)
names(X)
names(Y)
plot(X$x, Y$y)

データが常に 1 つの列だけで構成されていると仮定すると、data.frame から数値型のオブジェクト (つまり、 と同じ種類のオブジェクトX=c(1,2,3,5)) に変換することで上記のコードを修正できます。これはさまざまな方法で実行できます。

X <- unlist(read.xlsx(x,1))
Y <- unlist(read.xlsx(y,1))

または、代わりに、 read.xlsx() が data.frame の代わりにリストを返すようにすることをお勧めします

X <- read.xlsx(x,1, as.data.frame=FALSE)
Y <- read.xlsx(y,1, as.data.frame=FALSE)

または、呼び出し時に data.frame の最初の列にアクセスできますplot

plot(X[,1], Y[,1])

?as.numericこれらすべての関数が返すもの (例: 、?unlist?namesなど)についてはヘルプ ファイルを参照してください。オブジェクト プロパティのクエリについては?class?modeおよびも参照してください。?typeof

于 2013-03-12T14:18:43.093 に答える
1

Furthermore, the dimension is incorrect. The .xlsx file has 1 column, 150 rows, and no header.

ヘッダーはデフォルトで TRUE であるため、read.xlsx 呼び出しでこれを指定する必要があります。

X <- read.xlsx(x,1, header = TRUE)

プロットエラーについて:

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

read.xlsx は data.frames を返すため、エラーが表示されます。次に例を示します。

X <- data.frame(rnorm(150))
Y <- data.frame(rnorm(150))
plot(X, Y)

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

read.xlsx ドキュメントと R オブジェクト タイプについてよくお読みください。

于 2013-03-12T14:08:59.863 に答える