2013-03-12 2 views
1

Я новичок в R и пытаюсь запустить регрессионный анализ. Я построил произвольные векторы с функцией c() для изучения сюжетных, lm, fit, abline и итоговых функций. Это работает правильно, но при попытке регрессии импортированных данных появляется следующее сообщение об ошибке. Я не знаю, что вызывает ошибку или как ее исправить. Любая мысль? Благодарю.новый R пользователь имеет регрессионную проблему

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 

При преобразовании в CSV-файл, который я не особо хочу делать б/с из общего числа .xlsx файла у меня есть, я до сих пор такая же ошибка построения графиков, однако размер кажется чтобы быть правильным. В этом примере количество строк и столбцов остается одинаковым на 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 
+0

Просьба сделать вашу ситуацию воспроизводимой, то есть предоставить нам данные и код, необходимые для имитации вашей ситуации. См. Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example, чтобы узнать больше о том, как это сделать. – EDi

+0

> Кроме того, измерение неверно. Файл .xlsx имеет 1 столбец, 150 строк и без заголовка. <Заголовок по умолчанию TRUE, поэтому вы должны указать это в своем вызове read.xlsx. – EDi

ответ

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.

+1

Решение: перед использованием функции графика OP должен преобразовать кадры данных в векторы с помощью 'X <- unlist (X)'. –

+0

Спасибо за ответы. Я все еще работаю и компилирую свои последующие вопросы. Сейчас регрессия работает нормально. –

3

Проблема заключается в том, что X и Y являются объектами, называемыми фреймами данных (?data.frame), а не векторами. функция plot фактически является оберткой вокруг семейства других объектно-зависимых функций сюжета и в этом случае пытается построить с использованием 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) 

Предполагая, что ваши данные всегда состоят только из одной колонки, вы можете исправить код, указанный выше путем преобразования из data.frame в объект типа числовой (то есть, то же самое вид объекта как X=c(1,2,3,5)), которое может быть сделано различными способами

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

или, в качестве альтернативы, это лучше просто havie 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 для запроса свойств объекта.