当我键入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) 该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
我使用以下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)
有人可以帮忙吗?
我write.xlsx2
对xlsx
R包的功能有问题.例如,请参阅下面的代码.
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
忽略了波浪号,~
所以路径定义变成了垃圾.
有谁知道为什么参数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) 我使用的包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:工作簿已包含此名称的工作表
我真的需要多次更换现有的纸张.我怎样才能做到这一点?
谢谢,菲利波
起初,我尝试在 R 中读写 xlsx 文件(同时比较xlsx
和openxlsx
包之间的输出)。
我在 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 导出到 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 公式的方式不起作用。脚本在我将列声明为公式的步骤失败。创建单独的向量并将它们导出到工作簿的第二种方法也不起作用。
我该如何解决这个问题?
我正在 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\n\naddWorksheet(wb, "sheet 1") 中出错:第一个参数必须是\n 工作簿。
\n
这个错误将如何解决?
\n我已经使用 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”包有什么问题