Подтвердить что ты не робот

Конфликт с пакетом xlsx и select.files

У меня возникла странная проблема с загрузкой пакета xlsx и использованием select.files.

Эта проблема началась, как только я обновил RStudio до последней версии (v0.97.237). Если я запускаю RStudio, а затем загружаю xlsx (т.е. library(xlsx)), пакет загружается просто отлично. Однако, если я затем попытаюсь использовать choose.files(), RStudio зависнет (фактически он постоянно запускается и не может быть закрыт, не заканчивая его с помощью диспетчера задач Win7). Если я запускаю RStudio и сначала использую select.files, он работает нормально. Если я затем запустил строку library(xlsx), пакет xlsx не будет загружаться. Он дает ошибку ниже.

Я попытался переустановить пакет xlsx (вместе с xlsxjars и rJava), но это не сработало. Не переустанавливала Java.

Любые предложения? Я использую R v2.15.2.

library(xlsx)  
Loading required package: xlsxjars  
Loading required package: rJava  
Error occurred during initialization of VM  
Could not reserve enough space for object heap  
Error : .onLoad failed in loadNamespace() for 'xlsxjars', details:  
  call: .jinit()  
  error: Cannot create Java virtual machine (-4)  
Error: package ‘xlsxjars’ could not be loaded  

EDIT: Вот проблема. Извините за любую путаницу. Когда я введу это:

filename<-file.choose() #select file
library(xlsx)
mydata<-read.xlsx(filename,1) #load datafile

Я могу успешно выбрать имя файла, но пакет xlsx не загружается, поэтому я не могу открыть файл данных. Я получаю ошибку выше. Однако, если я запустил это вместо (после того, как я закрыл и перезапустил RStudio):

library(xlsx)
filename<-file.choose() #select file
mydata<-read.xlsx(filename,1) #load datafile

Пакет xlsx загружается правильно, но file.choose заставляет R запускаться неограниченно, поэтому script зависает, и я не могу загрузить файл. Это также имеет место при использовании choose.files(). Я не знаю, почему эти две вещи (xlsx и file.choose/choose.files) будут противоречивыми, но кажется, что они есть, поскольку я могу использовать только один или другой, в зависимости от того, какой из них я использую в первую очередь.

ИЗМЕНИТЬ 2: Я пробовал это на другом компьютере (той же ОС, той же версии R, RStudio и Java), и я получаю ту же проблему.

ИЗМЕНИТЬ 3: Я вернулся к RStudio v0.97.90, и проблема исчезла. Я думаю, это проблема RStudio.

4b9b3361

Ответ 1

Я всегда использую эти строки вверху:

options(java.parameters="-Xmx4000m")
options(java.home="C:/Program Files/Java/jre7/")

Смотрите, может быть, это помогает.

Ответ 2

Попробуйте очистить файлы Temp от

Панель управления > Программы > Java

Посмотрите, работает ли это.

Ответ 3

Недавно я столкнулся с этой проблемой при установке R на новую машину. Убедитесь, что вы используете правильную версию Java (32-разрядную или 64-разрядную) в соответствии с вашей версией R. Обратите внимание, что 64-разрядная версия Java не найдена на главной странице загрузки, а в их "руководстве" d/l page здесь.

Ответ 4

Попробуйте некоторые из этих пакетов:

install.packages("XLConnect")
install.packages("xlsxjars")
install.packages("xlsx")

Затем загрузите library()

Используйте read.xlsx2("blah.xlsx",sheetIndex=NULL)

Не используйте file.choose, просто вставьте файл прямо в функцию read.xlsx2

или

read.xlsx2("blah.xlsx",sheetName=NULL")

Ответ 5

Одним из новых пакетов является пакет rio. Он разрешил многие проблемы импорта и экспорта, которые у меня были, и имеет дополнительное преимущество, поскольку требуется только одна библиотека для импорта/экспорта многих разных форматов. Он определяет формат, основанный на расширении имени файла. Похоже, что он работает чище и быстрее, чем некоторые другие пакеты, хотя он использует в основном те же функции. Например, с файлами Excel он использует функцию write.xlsx, но работал у меня с большими наборами данных, когда write.xlsx этого не сделал. документацию пакетов можно найти здесь.

install.packages("rio")    
library(rio)

import("myfile.xlsx")
export(df, "myfile.xlsx")

Ответ 6

Я бы порекомендовал пакет Hadley readxl, он устанавливает из CRAN без зависимостей Java.

library("readxl")
my_data <- read_excel(filename, sheet = 1)