如何使用Openxlsx将data.frame保存到Excel,然后重新使用

如何使用Openxlsx将data.frame保存到Excel,然后重新使用,r,readxl,openxlsx,R,Readxl,Openxlsx,我添加了一个小示例来演示这个问题 library("readxl") library("openxlsx") df <- data.frame(QN=1, ST = "String", EL=cbind(list(c("Var1", "Var2"))), BL=FALSE) cat(paste0("\nQ=", as.numeric(df$QN[[1]]))) cat(paste0("\nST=", as.character(df$ST[[1]]))) cat(paste0("\nEL

我添加了一个小示例来演示这个问题

library("readxl")
library("openxlsx")

df <- data.frame(QN=1, ST = "String", EL=cbind(list(c("Var1", "Var2"))), BL=FALSE)

cat(paste0("\nQ=", as.numeric(df$QN[[1]])))
cat(paste0("\nST=", as.character(df$ST[[1]])))
cat(paste0("\nEL=", as.character(df$EL[[1]])))
cat(paste0("\nBL=", as.logical(df$BL[[1]])))

wb <- createWorkbook("TEST")

addWorksheet(wb, "Data")
writeData(wb, sheet = 1, df)

saveWorkbook(wb, file = "Test.xlsx", overwrite = TRUE)

df2 <- read_excel(sheet = 1, "Test.xlsx")

cat(paste0("\n\nQ2=", as.numeric(df2$QN[[1]])))
cat(paste0("\nST2=", as.character(df2$ST[[1]])))
cat(paste0("\nEL2=", as.character(df2$EL[[1]])))
cat(paste0("\nBL2=", as.logical(df2$BL[[1]])))

当我使用view(df)查看数据帧时,我看到:

c("Var1", "Var2") for EL
Var1, Var2 for EL
当我查看第二个日期框时,我看到:

c("Var1", "Var2") for EL
Var1, Var2 for EL
注意EL和EL2之间的区别。我想让EL2和EL匹配

---原始问题--- 我有一个简单的数据框,看起来像这样(我只列出一个元素):

我使用以下代码将数据框保存到Excel:

writeData(wb, sheet = iSheet, df, startCol = 1, startRow = 1)
df <- read_excel(sheet = 1, ExcelFile)
该列在Excel文件中如下所示: 角色1、角色2、角色3

我使用以下代码将Excel文件读回data.frame:

writeData(wb, sheet = iSheet, df, startCol = 1, startRow = 1)
df <- read_excel(sheet = 1, ExcelFile)

df有了您的附加信息,我可以用
base
软件包实现这一点

df2$EL2 <- lapply(strsplit(df2$EL, ","), trimws, "l")
identical(df2$EL2[1], df$EL[1])

df2$EL2您好,您可以使用
stru split
library(stringr)
分割向量。除此之外,如果您重新编写示例,以便人们可以重新创建示例文件。这将更容易帮助。现在你的dataframe
c(…)
对我来说就像一个向量。data.frame包含大约15个不同的元素,从向量到数字、布尔值等等。我总结为一个来说明我的问题。我使用此命令创建data.frame df。Johannes Stotzer推荐的解决方案有效。您好,您无需评论它对您有帮助。相反,向上投票并将其标记为解决方案,这样其他人更容易看到。