将dataframe的每一列写为excel文件的列

xu3bshqb  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(144)

我正在使用一种名为.fef的文件格式,它具有以下结构。

patientId 1      NA      NA          NA       NA
Probes             Symbol  FoldChange  green    red
124 427 5849 CA    A2M     -2.13       52 24

为了编写此 Dataframe ,我使用以下函数:

fwrite(dat, file = "C:/Users/patient1.fef"), append = TRUE, quote = FALSE, sep = " ", col.names = FALSE)

这将创建一个可以用excel打开的文件,其中所有值都在第一列中,由空格分隔。
我想要的是dataframe的每一列都在excel文件的一列中。
然而,fwrite函数的输出给出了一个excel文件,其中所有列都在excel文件的第一列中。
因为这是一个.fef文件,所以我不能像write_excel那样使用函数。

dgsult0t

dgsult0t1#

可以使用命令“rngAll$TextToColumns(DataType = 1,Other = TRUE,OtherChar =““,ConsecutiveDelimiter = TRUE)”将第一列的文本分隔为多列(有关不同的选项,请参阅https://learn.microsoft.com/en-us/office/vba/api/excel.range.texttocolumns)。我已经能够使用下面的代码分隔第一列的文本。这种方法仅适用于Windows。

library(stringr)
library(RDCOMClient)

file.rename(from = "D:\\data_File.fef",
             to = "D:\\data_File2.csv")

text <- readLines("D:\\data_File2.csv")
text <- stringr::str_replace_all(text, pattern = "(\\d{2,5})([:space:]{1,5})(\\d{2,5})", "\\1\\3")
text <- stringr::str_replace_all(text, pattern = "(\\d{2,5})([:space:]{1,5})(\\d{2,5})", "\\1\\3")
text <- stringr::str_replace_all(text, pattern = "(patientId)([:space:]{1,5})(\\d{1,5})", "\\1\\3")

fileConn <- file("D:\\data_File3.csv")
writeLines(text, fileConn)
close(fileConn)

path_Excel_File1 <- "D:\\data_File3.csv"

xlApp <- COMCreate("Excel.Application")
xlApp[["Visible"]] <- TRUE
xlWbk <- xlApp$Workbooks()$Open(path_Excel_File1)
Sheets <- xlWbk$Sheets()

rngAll <- Sheets[[1]]$Range("A1:A5")
rngAll$TextToColumns(DataType = 1, Other = TRUE, OtherChar = " ", ConsecutiveDelimiter = TRUE)

您也可以使用命令fwrite(dat,file =“C:/Users/patient1.fef”),append = TRUE,quote = FALSE,sep =“;“,col.names = FALSE)并将文件保存为csv文件。使用不是空格字符(如““)的分隔符来分隔文本会更容易。

相关问题