标签: r-xlsx

尝试在R中加载包时由于rJava而出现问题

当我键入require(xlsx)xlsx在R中加载包时,会显示以下消息:

> require(xlsx)
Loading required package: xlsx
Loading required package: xlsxjars
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: JAVA_HOME cannot be determined from the Registry
Failed with error:  ‘package ‘rJava’ could not be loaded’
Run Code Online (Sandbox Code Playgroud)

我也尝试rJava手动加载包但收到此错误消息:

require(rJava)
Loading required package: rJava
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: fun(libname, pkgname)
  error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make …
Run Code Online (Sandbox Code Playgroud)

r rjava r-xlsx

76
推荐指数
4
解决办法
13万
查看次数

如果列中没有日期,则read.xlsx读取日期错误

xlsx包读取日期在错误.我已经在这里阅读了所有顶级类似的Q并且在互联网上有一个侦察员,但如果列中存在非日期数据,我无法找到原点发生变化的特殊行为.

我有一个可以从Dropbox获得的小型Excel电子表格:

https://www.dropbox.com/s/872q9mzb5uzukws/test.xlsx

它有三行,两列.第一个是日期,第二个是数字.第三行在日期列中有"总计".

如果我在前两行读取read.xlsx并告诉它第一列是一个日期,那么这是有效的:

read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("Date","integer"),endRow=2)
          X1 X2
1 2014-06-29 49
2 2014-06-30 46
Run Code Online (Sandbox Code Playgroud)

这些确实是电子表格中的日期.如果我尝试读取所有三行,则会出现问题:

read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("Date","integer"))
          X1    X2
1 2084-06-30    49
2 2084-07-01    46
3       <NA> 89251
Warning message:
In as.POSIXlt.Date(x) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

如果我尝试以整数读入,我得到不同的整数:

> read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("integer","integer"),endRow=2)
     X1 X2
1 16250 49
2 16251 46
> read.xlsx("./test.xlsx",head=FALSE,1,colClasses=c("integer","integer"))
     X1    X2
1 41819    49
2 41820    46
3    NA 89251
Run Code Online (Sandbox Code Playgroud)

使用as.Date(s1$X1,origin="1970-01-01")(Unix纪元)正确转换第一个整数,并使用as.Date(s2$X1, origin="1899-12-30")(Excel纪元)正确转换第二个整数.如果我使用1970转换第二批我得到2084日期.

那么:我做错了吗?最好是整数读取,如果有任何NA然后使用Excel时代转换,否则使用Unix纪元?或者它是xlsx包中的错误?

xlsx版本是版本:0.5.1

excel r date r-xlsx

13
推荐指数
2
解决办法
1万
查看次数

R中的MemoryError,而read.xlsx

我使用以下R代码(利用Java参数来增加内存):

library(xlsx)
options(java.parameters = "-Xmx1g")
library(XLConnect)
NiVe <- read.xlsx("version1.xlsx",1)
Run Code Online (Sandbox Code Playgroud)

version1.xlsx文件大小为13 MB.我收到以下错误:

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

java heap r out-of-memory r-xlsx

12
推荐指数
2
解决办法
2万
查看次数

write.xlsx函数在使用文件名定义路径时会出错,但read.xlsx很好

write.xlsx2xlsxR包的功能有问题.例如,请参阅下面的代码.

main_path<-"~/mydir/"
read.xlsx2(paste0(main_path,"my_input_excel.xlsx"), sheetIndex=1)
a<-1
write.xlsx2(a, paste0(main_path,"my_output_excel.xlsx"), sheetName="Sheet1", col.names=TRUE, row.names=FALSE, append=FALSE)
Run Code Online (Sandbox Code Playgroud)

虽然read.xlsx2功能工作正常,write.xlsx2函数提供错误

错误.jnew("java/io/FileOutputStream", jFile):
java.io.FileNotFoundException:/mydir/my_output_excel.xlsx(没有这样的文件或目录)

当我删除paste0部件并只写文件名时,一切都很好.所以问题是定义路径.

ps我想知道,也许write.xlsx忽略了波浪号,~所以路径定义变成了垃圾.

r rjava r-xlsx

10
推荐指数
1
解决办法
6083
查看次数

read.xlsx和colClasses

有谁知道为什么参数colClasses似乎不起作用read.xlsx

我创建了一个示例*.xlsx文件:

> library(xlsx)
> d1 = data.frame(A=LETTERS[1:3], B=letters[1:3], C=1:3, D=c(1.1, NA, NA))
> str(d1)
'data.frame':   3 obs. of  4 variables:
 $ A: Factor w/ 3 levels "A","B","C": 1 2 3
 $ B: Factor w/ 3 levels "a","b","c": 1 2 3
 $ C: int  1 2 3
 $ D: num  1.1 NA NA
> write.xlsx(d1, 'test.xlsx', sheetName='Sheet1', row.names=F, showNA=F)
Run Code Online (Sandbox Code Playgroud)

然后尝试用read.xlsx,不带和带colClasses参数读取它:

> d2 = read.xlsx('test.xlsx', sheetName='Sheet1')
> str(d2)
'data.frame':   3 obs. of  4 …
Run Code Online (Sandbox Code Playgroud)

r r-xlsx

7
推荐指数
1
解决办法
2万
查看次数

使用write.xlsx将现有工作表替换为R包xlsx

我使用的包xlsx版本:0.0.7日期:2014-08-01.在R版本3.0.1(2013-05-16) - "好运动"平台:i386-w64-mingw32/i386(32位).

我有一个xlsx文件,至少有2张(比如A和B).我需要从A读取数据,编辑它们并将它们保存在B中.这必须在期刊基础上完成.

我能够从A读取数据read.xlsx.编辑数据框后,我想将其保存在同一xlsx文件中的现有工作表B中.

我试着用这条线

write.xlsx(down, paste0(root,'/registration reports/registration complete_WK.xlsx'), sheet="data_final", col.names=T, row.names=F, append=T, showNA=F)
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误:

错误.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet",:java.lang.IllegalArgumentException:工作簿已包含此名称的工作表

我真的需要多次更换现有的纸张.我怎样才能做到这一点?

谢谢,菲利波

java excel r overwrite r-xlsx

7
推荐指数
1
解决办法
1万
查看次数

使用 R openxlsx 包写入 xlsx 文件后无法打开文件

起初,我尝试在 R 中读写 xlsx 文件(同时比较xlsxopenxlsx包之间的输出)。

我在 mac os 上工作。

使用read.xlsx()来自两个包的读取 xlsx 文件效果很好。但是,在编写新文件时,只有xlsx::write.xlsx()有效的。

更确切地说,该openxlsx::write.xlsx()命令没有出错,并且成功保存了一个 xlsx 文件,但是当我尝试使用 Numbers 打开该文件(通过双击文件夹中的文件)时,弹出一条错误消息告诉我该文件无法打开。

我尝试了不同的数据框,但结果保持不变。为了显示一个例子,请参考我直接从 R 帮助页面获取的以下行。它应该有效,但对我不起作用。

write.xlsx(iris, file = "writeXLSX1.xlsx", colNames = TRUE, borders = "columns")
Run Code Online (Sandbox Code Playgroud)

有人告诉我是什么问题吗?我试图用谷歌搜索旧线程,但似乎没有人讨论这个问题。我知道在许多类似的线程中人们建议更换软件包,好吧...在此之前,您能告诉我有哪些限制openxlsx吗?

r r-xlsx

6
推荐指数
0
解决办法
1829
查看次数

openxlsx 写公式从 R 到 excel

我正在尝试从 R 导出到 excel 具有两列的数据框,我想用 excel if 公式填充这些列,以便用户以后可以更改阈值。我的问题是如何将如下所示的公式 IF(C2>4; "YES";"NO") 导出到新列的每个单元格到 excel 中。

R代码:

library(openxlsx)
library(dplyr)
export_df<-   mtcars %>% tibble::rownames_to_column(var="carname")

# Formulas in EXCEL IF(C>4; "YES";"NO") IF(E>100; "YES";"NO") 

export_df$many_cyl <- paste(paste(paste0(paste0("IF(C" ,seq(2,nrow(export_df)+1 ,1))," > 4")," 'Yes' ", sep=";")," 'No') ", sep=";")

export_df$fast_car <-  paste(paste(paste0(paste0("IF(E" ,seq(2,nrow(export_df)+1,1))," > 100")," 'Yes' ", sep=";")," 'No')", sep=";")

class(export_df$many_cyl) <- c(class(export_df$many_cyl), "formula")
class(export_df$fast_Car) <- c(class(export_df$fast_car), "formula")

openxlsx::addWorksheet(wb,sheetName ="mtcars" )
openxlsx::writeData(wb,"mtcars",export_df )
openxlsx::saveWorkbook(wb, "mtcars.xlsx")
Run Code Online (Sandbox Code Playgroud)

我尝试创建 excel 公式的方式不起作用。脚本在我将列声明为公式的步骤失败。创建单独的向量并将它们导出到工作簿的第二种方法也不起作用。

我该如何解决这个问题?

excel r excel-formula r-xlsx openxlsx

6
推荐指数
1
解决办法
2469
查看次数

“addWorksheet(wb, "sheet1") 中的错误:第一个参数必须是工作簿”

我正在 R 中使用\xe2\x80\x98openxlsx\xe2\x80\x99包。\xd9\xb0我想在 xlsx 文件中添加一些数据。我使用以下代码创建工作簿并在其中添加工作表。

\n\n
 wb=createWorkbook()\n addWorksheet(wb,"sheet 1")\n writeData(wb,sheet = 1,"From",startCol = 1,startRow = 1)\n writeData(wb,sheet = 1,"To",startCol = 2,startRow = 1)\n writeData(wb,sheet = 1,"From",startCol = 1,startRow = 2)\n writeData(wb,sheet = 1,"From",startCol = 1,startRow = 2)\n saveWorkbook(wb,"file.xlsx",overwrite = TRUE)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这段代码在很长一段时间内运行良好,但最近我遇到了这个错误

\n\n
\n

addWorksheet(wb, "sheet 1") 中出错:第一个参数必须是\n 工作簿。

\n
\n\n

这个错误将如何解决?

\n

r xlsx r-xlsx openxlsx

6
推荐指数
1
解决办法
1万
查看次数

R 会话中止且 R 遇到致命错误

我已经使用 Rstudio 一段时间了,在我尝试在 R 中安装 rJava 和 xlsx 包之前没有任何问题。我已经将我的 RGui 和 Rstudio 更新到最新版本(自从早些时候我就为我的桌面下载了 java x64 位)尝试安装 rJava 和 xlsx 软件包时出现 Java_Home 错误消息)并且我能够在 Rstudio 中安装 rJava 和 xlsx,但是当我使用

library(xlsx)

我遇到了 R 会话中止消息。即使我已经关闭应用程序并尝试再次打开它,这种情况每次都会发生。

我目前在 Rstudio 中使用 2022.02.2 Build 485,在 RGui 中使用 4.20.0。有人知道我能用这个做什么吗?

编辑:我最终使用了一个不同的包来读取我的 excel 文件(read_excel)来获取我的数据,效果非常好。但是,我仍然不知道我的“xlsx”包有什么问题

r error-messages-for rstudio r-xlsx

5
推荐指数
1
解决办法
6291
查看次数