我确实有一个关于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_odd
和table_oddp
表示包含estimantes及其p级指标的列向量,以及table_even
parantheses中的标准错误。所有向量都是chr
我运行write.xlsx(table, paste0(getwd(), "/results.xlsx"), sheetName = "Results")
将矩阵转换为.xlsx
答案 0 :(得分:0)
在传递矩阵write.xlsx
之前,您必须将矩阵转换为数据框。否则write.xlsx
将使用默认参数完成工作。但是,您需要设置check.names=F
和fix.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)