R: XLConnect не передает имена переменных

Я хотел бы передать результаты расчета линейной модели из R на рабочий лист в Excel. Для этого я использую XLConnect со следующим кодом:

x <- 1000:2000
y <- 3*x+rnorm(length(x))
fit <- lm(y~x-1)
result <- summary(fit)$coeff

print(result)

require(XLConnect)
wb <- loadWorkbook("/Users/andreas/test1.xls", create = TRUE)
createSheet(wb, name = "test")
writeWorksheet(wb, result, sheet = "test", startRow = 1, startCol = 1)
saveWorkbook(wb)

Однако проблема в том, что XLConnect не передает имена коэффициентов в Excel (здесь: x), хотя они распечатываются правильно.

Кто-нибудь имеет представление об этой проблеме?

Буду очень признателен за любую помощь.

Энди


person Andy    schedule 26.06.2013    source источник


Ответы (2)


Имя переменной в этом случае заканчивается как имя строки, как только result преобразуется во фрейм данных. В writeWorksheet есть аргумент с именем rownames:

wb <- loadWorkbook("~/Desktop/test1.xls", create = TRUE)
createSheet(wb, name = "test")
writeWorksheet(wb, result, sheet = "test", startRow = 1, startCol = 1,rownames = "var")
saveWorkbook(wb)
person joran    schedule 26.06.2013

Вы можете передать имена таблицы коэффициентов отдельно значениям:

writeWorksheet(wb, colnames(result), sheet="test", startRow=1, startCol=2)
writeWorksheet(wb, rownames(result), sheet="test", startRow=2, startCol=1)
writeWorksheet(wb, result, sheet="test", startRow=2, startCol=2)
person Hong Ooi    schedule 26.06.2013
comment
Привет Хонг Оой, большое спасибо за вашу помощь. К сожалению, ваше решение не работает. Если я делаю имена (результат), он возвращает NULL. Вы имеете представление об этом - person Andy; 26.06.2013
comment
А, я не заметил, что вы получили таблицу коэффициентов от summary. Я предполагал, что вы просто делаете coef(fit). - person Hong Ooi; 26.06.2013
comment
Спасибо, это прекрасно работает. Хотя, я не понимаю, зачем вы создаете nr и nc, если вы их потом не используете. - person Andy; 26.06.2013
comment
Потому что кофе выветрился. :) Отредактировано (еще раз). - person Hong Ooi; 26.06.2013