Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从R导出到Excel_R_Excel_R Faq_Java - Fatal编程技术网

将数据从R导出到Excel

将数据从R导出到Excel,r,excel,r-faq,java,R,Excel,R Faq,Java,我正在编写将数据库从R导出到Excel的代码,我一直在尝试其他代码,包括: write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t") write.csv(ALBERTA1,":\ALBERTA1.csv") your_filename_in_R = read.csv("ALBERTA1.csv") your_filename_in_R = read.csv("ALBERTA1.csv") write.csv(df, file = "ALBERTA1.c

我正在编写将数据库从R导出到Excel的代码,我一直在尝试其他代码,包括:

write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t")
write.csv(ALBERTA1,":\ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(df, file = "ALBERTA1.csv")
your_filename_in_R = read.csv("ALBERTA1.csv")
write.csv(ALBERTA1, "ALBERTA1.csv")
write.table(ALBERTA1, 'clipboard', sep='\t')
write.table(ALBERTA1,"ALBERTA1.txt")
write.table(as.matrix(ALBERTA2),"ALBERTA2.txt")
write.table(as.matrix(vecm.pred$fcst$Alberta_Females[,1]), "vecm.pred$fcst$Alberta_Females[,1].txt")
write.table(as.matrix(foo),"foo.txt")
write.xlsx(ALBERTA2, "/ALBERTA2.xlsx")
write.table(ALBERTA1, "D:/ALBERTA1.txt", sep="\t").
本论坛的其他用户建议我:

write.csv2(ALBERTA1, "ALBERTA1.csv")
write.table(kt, "D:/kt.txt", sep="\t", row.names=FALSE)
你可以在图片上看到我从上面的代码中得到的结果。但是这个数字不能用来做任何进一步的运算,比如与其他矩阵相加

有人遇到过这种问题吗?

包中的WriteXLS函数可以将数据写入Excel


或者,该软件包中的write.xlsx也可以工作。

最近使用的xlsx软件包工作良好

library(xlsx)
write.xlsx(x, file, sheetName="Sheet1")

其中x是data.frame

我一直在尝试不同的软件包,包括以下功能:

install.packages ("prettyR") 

library (prettyR)
csv.csv Corrvar是一个对象的名称,该对象来自我对缩放变量的输出,用于运行回归

然而,我对另一个分析占用模型模型选择输出的输出尝试了相同的代码,但它不起作用。经过多次尝试和探索,我:

从R Ctrl+c复制了输出 在Excel工作表中,我将其粘贴为Ctrl+V 选择存储数据的第一列 在数据渐晕图中,单击要显示的文本列

选择分隔选项,单击下一步

在分隔符中勾选空格框,单击下一步

单击完成结束

您的输出现在应该是可以在excel中轻松操作的格式。因此,也许这不是最理想的选择,但如果您只是想以另一种方式探索数据,它确实起到了作用

注:如果excel中的标签不完全相同,那是因为我在翻译西班牙语excel中的标签

,无Java要求:

# install.packages("writexl")
library(writexl)
tempfile <- write_xlsx(iris)
另一个选项是openxlsx包。它不依赖于Excel文件,可以读取、编辑和写入Excel文件。从软件包的描述中:

openxlsx简化了从R编写Excel xlsx文件和设置其样式的过程,并消除了对Java的依赖

用法示例:

library(openxlsx)

# read data from an Excel file or Workbook object into a data.frame
df <- read.xlsx('name-of-your-excel-file.xlsx')

# for writing a data.frame or list of data.frames to an xlsx file
write.xlsx(df, 'name-of-your-excel-file.xlsx')
除了这两个基本功能外,openxlsx包还有许多其他用于处理Excel文件的功能


比如说,,通过WriteDataable功能,您可以在Excel文件中创建格式化的表格。

这里有一种方法,可以通过不同的ID将数据框中的数据写入Excel文件,并通过与第一级ID关联的另一个ID将数据框中的数据写入不同的选项卡工作表。假设您有一个数据框,该数据框将电子邮件地址作为多个不同用户的一列,但每封电子邮件都有一系列包含所有数据的“子ID”

data <- tibble(id = c(1,2,3,4,5,6,7,8,9), email_address = c(rep('aaa@aaa.com',3), rep('bbb@bbb.com', 3), rep('ccc@ccc.com', 3)))
正则表达式从电子邮件地址获取名称并将其放入文件名中

希望有人觉得这有用。我相信有更优雅的方式来做这件事,但它的工作

顺便说一句,这里有一种方法可以将这些单独的文件发送到data.frame中的各个电子邮件地址。代码进入第二个循环[j]


如果您不发布dputALBERTA1或dputheadALBERTA1的输出,我们将无法提供帮助。有太多的猜测。请注意,这显然是问题的后续。RGUI界面上的前6个数字如下:55.5486398、57.8471114、54.5190511、50.5751821、49.4739451、53.4697459。您可以检查每个输出是否有一个简短的小数部分。然而,当我通过上述代码在Excel上传输相同的数字列表时,我得到了以下不清楚的输出形状:555.486.398.454.784、578.471.113.839.479、54.519.051.119.506、49.473.945.115.391、534.697.459.336.592,505.751.821.039.884..等当然无法管理您可以看到excel中的555.486.398.454.784与55.5486398R-gui界面完全不同。xlsx需要Java。如果公司计算机上的R奇怪设置由于任何原因无法访问它,那么这将不起作用。将java的jre路径添加到系统变量路径中,则R可以访问java功能。为此,请转到“我的计算机属性”,然后是“高级系统设置”,然后是“环境变量”。将java路径添加到path.xlsx需要java。WriteXLS需要Perl。如果由于任何原因R无法访问这些,我无法轻松选择在公司计算机上安装什么,那么这两个都不起作用。我理解开发人员可以方便地依赖现有的Java和Perl库;但是R不应该独立吗?WriteXL不能处理字符中的换行。openxlsx依赖于Rtools,需要安装Rtools并将其添加到系统变量路径中。这对公司电脑来说并不理想。我使用它,现在正试图寻找替代方案,因为我需要使代码的可移植版本在不安装任何东西的情况下工作。@Arani我对此深表怀疑。我已经在Windows虚拟机上安装了openxlsx,但没有Rtools,它可以正常工作。在我的情况下,它可以完成除saveWorkbook或write.xlsx之外的所有功能。为此,它要求使用Rtools。神秘@jaap某些函数依赖于Rtools,但不依赖于Rtoolsall@Jaap是的,请查看此页面,不幸的是,对于公司计算机也不是很好:仅在中提供的软件包
源窗体,可能需要编译C/C++/Fortran:'writexl'这些将不会installed@JulianDrago难道你不能在非公司的电脑上编译它吗?从对这个问题的评论来看,这对我和其他许多人来说都不是一个选择。我的评论旨在提醒我们这些人,这可能在防火墙/非管理员用户工作环境中不起作用-我怀疑我们中的许多人正是出于这个原因,在这里寻找可能起作用的流行xlsx软件包的替代品。

temp_dir <- tempdir()

for(i in unique(data$email_address)){
    
  data %>% 
    filter(email_address == i) %>% 
    arrange(id) -> subset_data
  
  for(j in unique(subset_data$id)){
    write.xlsx(subset_data %>% filter(id == j), 
      file = str_c(temp_dir,"/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0- 
       9._%+-]+"),'_', Sys.Date(), '.xlsx'), 
      sheetName = as.character(j), 
      append = TRUE)}
 
  }

  send.mail(from = "sender@sender.com",
            to = i,
          subject = paste("Your report for", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"), 'on', Sys.Date()),
          body = "Your email body",
          authenticate = TRUE,
          smtp = list(host.name = "XXX", port = XXX,
                      user.name = Sys.getenv("XXX"), passwd = Sys.getenv("XXX")),
          attach.files = str_c(temp_dir, "/your_filename_", str_extract(i, pattern = "\\b[A-Za-z0-9._%+-]+"),'_', Sys.Date(), '.xlsx'))