我添加了一个小例子来说明问题
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]])))
输出看起来像这样
Q=1
ST=String
EL=Var1
EL=Var2
BL=FALSE
Q2=1
ST2=String
EL2=Var1, Var2
BL2=FALSE
当我使用view(df)查看数据框时,我看到了:
c("Var1", "Var2") for EL
当我查看第二个日期框架时,会看到以下内容:
Var1, Var2 for EL
注意EL和EL2之间的区别。我希望EL2与EL匹配。
---原始问题--- 我有一个看起来像这样的简单数据框(我只列出一个元素):
cElementNames
c("Roles_1", "Roles_2", "Roles_3")
我使用以下代码将数据框保存到Excel:
writeData(wb, sheet = iSheet, df, startCol = 1, startRow = 1)
该列在Excel文件中如下所示: 角色_1,角色_2,角色_3
我使用以下代码将Excel文件读回到data.frame:
df <- read_excel(sheet = 1, ExcelFile)
该元素现在看起来像这样: “角色_1,角色_2,角色_3”
并且无法在我的代码中使用。
我正在使用data.frame来保存配置选项,以便生成报告。我宁愿从Excel中读取配置信息,也不愿在代码中对其进行硬编码。
由于我是新来的,所以我会寻求任何建议。
谢谢
答案 0 :(得分:0)
使用您的其他信息,我可以使用base
软件包来完成此操作。
df2$EL2 <- lapply(strsplit(df2$EL, ","), trimws, "l")
identical(df2$EL2[1], df$EL[1])
现在您拥有与以前相同的内容。