【发布时间】:2019-10-23 15:27:00
【问题描述】:
我添加了一个小例子来演示这个问题
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 文件中如下所示: Roles_1、Roles_2、Roles_3
我使用以下代码将 Excel 文件读回 data.frame:
df <- read_excel(sheet = 1, ExcelFile)
元素现在看起来像这样: "Roles_1、Roles_2、Roles_3"
并且在我的代码中不可用。
我正在使用 data.frame 来保存配置选项,以便生成报告。我宁愿从 Excel 中读取配置信息,也不愿在我的代码中硬编码。
由于我是这方面的新手,我会听取我能得到的任何建议。
谢谢
【问题讨论】:
-
您好,您可以使用
str_split中的library(stringr)来拆分向量。除此之外,如果您修改示例,以便人们可以重新创建示例文件。帮助会更容易。现在你的数据框c(...)在我看来就像一个向量。 -
data.frame 包含大约 15 个不同的元素,从向量到数字、布尔值等不一而足。我总结了一个来说明我的问题。我使用此命令创建 data.frame df