R - 停止write.xlsx()使列名在语法上有效

时间:2017-08-28 17:39:42

标签: r excel export

我确实有一个关于R中write.xlsx()包的xlsx功能的具体问题。

我有一个包含面板数据回归输出的矩阵。为方便起见,我想将这些输出导出到.xlsx文件,以将其包含在Word文档中。但是,当我通过write.xlsx导出矩阵时,列名称会自动编辑为语法上有效的样式,除了点,字母和数字之外没有其他符号。那么,矩阵的列向量

table_columns <- c("Estimate (All periods)", "", "s.e. (All periods)", "Estimate (Periods 0 & 1)", "", "s.e. (Periods 0 & 1)")

""是空列名称,因为这些列包含p值的星形指示符) 变

Estimate..All.periods.|V2|s.e...All.periods.|Estimate..Periods.0...1.|V5|s.e...Periods.0...1.

有没有办法抑制这种重新格式化,以便在输出后不需要编辑.xlsx文件?

-Edit - 让事情更容易理解:

我有一个向量table_rows c("All periods", " Std. error (All periods)", "Periods 0 & 1", " Std. error (Periods 0 & 1)") 以及table_columns

的向量c("(1) 1AM - 6AM", "", "(2) 6AM - 10AM", "", "(3) 10AM - 6PM", "", "(4) 6PM - 10PM", "", "(5) 10PM - 1AM", "", "(6) Daily", "")

这些用于设置矩阵table的dimnames  与matrix(c(table_1, table_1p, table_2, table_2p, table_3, table_3p, table_4, table_4p, table_5, table_5p, table_6, table_6p), 4, 12, dimnames = list(table4_rows, table4_columns))

其中table_oddtable_oddp表示包含estimantes及其p级指标的列向量,以及table_even parantheses中的标准错误。所有向量都是chr

类型

我运行write.xlsx(table, paste0(getwd(), "/results.xlsx"), sheetName = "Results")将矩阵转换为.xlsx

1 个答案:

答案 0 :(得分:0)

在传递矩阵write.xlsx之前,您必须将矩阵转换为数据框。否则write.xlsx将使用默认参数完成工作。但是,您需要设置check.names=Ffix.empty.names=F以禁用语法检查并替换空列名称。

这里是reproducible example - 请发布以下未来问题:

library(xlsx)
table_rows <- c("All periods", "  Std. error (All periods)", "Periods 0 & 1", "  Std. error (Periods 0 & 1)") 
table_columns <- c("(1) 1AM - 6AM", "", "(2) 6AM - 10AM", "", "(3) 10AM - 6PM", "", "(4) 6PM - 10PM", "", "(5) 10PM - 1AM", "", "(6) Daily", "")
m <- matrix(seq_len(4*12), 4, 12, dimnames = list(table_rows, table_columns))
# convert matrix to list so that one can use as.data.frame's fix.empty.names=F:
df <- as.data.frame(setNames(lapply(1:ncol(m), function(x) m[, x]), colnames(m)), check.names=F, fix.empty.names = F)
write.xlsx(df, tf <- tempfile(fileext = ".xlsx"))
shell.exec(tf)
相关问题