R语言write.xlsx保存后读取对象非普通dataframe问题咨询
问题原因
类不一致的问题和write.xlsx写入环节无关,你无需调整写入函数的参数。
Excel属于通用表格存储格式,不会保存R对象的专属类属性。你读取后得到tibble(tbl_df类)对象,是readxl包的read_excel()函数的默认行为导致的:read_excel默认返回* tibble类型对象*,而tibble是data.frame的子类,所以你会看到类属性输出同时包含tbl_df、tbl、data.frame三个值。
解决方法
- 方法1:读取后直接强制转换为普通data.frame,修改读取代码即可:
df <- as.data.frame(read_excel("df.xlsx"))
转换后调用class(df)将仅返回"data.frame",符合你的需求。
- 方法2:读写均使用
openxlsx包的函数,该包的read.xlsx()默认返回普通data.frame,无需额外转换:
# 写入代码和之前一致 library(openxlsx) write.xlsx(df,"df.xlsx", overwrite = TRUE) # 改用openxlsx的读取函数 df <- read.xlsx("df.xlsx")
- 方法3:如果需要频繁使用
read_excel读取文件且不想每次手动转换,可以封装自定义读取函数:
# 封装返回普通data.frame的读取函数 read_excel_to_df <- function(path, ...) { as.data.frame(readxl::read_excel(path, ...)) } # 调用自定义函数读取 df <- read_excel_to_df("df.xlsx")
内容的提问来源于stack exchange,提问作者luchonacho
相关产品推荐
相关产品推荐

