R使用write_xlsx导出数据框至Excel时最后一列无值问题求助
问题排查与解决方案
问题根源
你的列计算代码逻辑错误:mutate() 函数返回的是完整数据框,而非单独的计算结果向量,你将整个数据框赋值给了 aez_frequency$Frequency_AEZ_change,导致该列变为嵌套数据框(list类型列),write_xlsx 无法识别嵌套列的内容,因此导出后该列为空。
修复步骤
1. 修正列计算代码
以下两种写法二选一即可:
- tidyverse管道写法(推荐)
library(tidyverse) aez_frequency <- aez_frequency %>% mutate(Frequency_AEZ_change = rowSums(select(., Diff1:Diff3), na.rm = TRUE))
- 基础R赋值写法
aez_frequency$Frequency_AEZ_change <- rowSums(aez_frequency[, c("Diff1", "Diff2", "Diff3")], na.rm = TRUE)
2. 验证列格式
修复后先运行以下代码,确认列格式正确:
# 查看列类型,确认返回为numeric/int,而非list/data.frame str(aez_frequency$Frequency_AEZ_change) # 预览前几行的计算结果 head(aez_frequency$Frequency_AEZ_change)
3. 重新导出Excel
确认导出对象名正确(你原代码中的X如果对应aez_frequency请替换一致),重新导出即可:
library(writexl) write_xlsx(aez_frequency, "/Users/MT/Desktop/Analysis v2/Frequency_aez.xlsx")
内容的提问来源于stack exchange,提问作者Shunrei
相关产品推荐
相关产品推荐

