我是R的初学者,我想在同一个excel电子表格中编写由两个矩阵组成的输出数据,每个矩阵具有列名和行名。 我试图连接具有相同维度但我失败的两个矩阵。
First case Conversion time Value Parameter Conversion prob
Mean 1.111583 0.9690824 0.9922606664 0.80429352 0.9017
Std 1.111583 1.7619508 0.0004687991 0.01161018 0.9017
Min 1.111583 0.0060000 0.9891755625 0.72675179 0.9017
Max 1.111583 9.2480000 0.9935047362 0.81800510 0.9017
Second case Conversion time Value Parameter Conversion prob
Mean 1.113336 2.201757 0.9867097947 0.55481942 0.7674
Std 1.113336 2.394181 0.0003237515 0.01084467 0.7674
Min 1.113336 0.050000 0.9844458277 0.47898355 0.7674
Max 1.113336 9.244000 0.9870852487 0.56739596 0.7674
有人可以帮我一把吗?
修改:我无法安装XLConnect。实际上我不允许安装任何 在我工作的计算机中打包。有谁知道 @nrussell提出的另一种方法产生相同的输出?
答案 0 :(得分:1)
我不清楚你在寻找什么,但是如何使用包XLConnect
:
library(XLConnect)
##
## Some toy data
M1 <- matrix(
data=cbind(
rep(1.111583,4),
rnorm(4),
rnorm(4),
rnorm(4),
prob=rep(0.9017,4)),
nrow=4)
##
colnames(M1) <- c(
"First Case","Conversion Time",
"Value","Parameter Conversion","Prob")
rownames(M1) <- c(
"Mean","Std","Min","Max")
##
M2 <- M1
M2[,5] <- rep(0.7674,4)
colnames(M2)[1] <- "Second Case"
##
> head(M1)
First Case Conversion Time Value Parameter Conversion Prob
Mean 1.111583 0.5137628 0.50627262 1.6387446 0.9017
Std 1.111583 0.3992718 0.34755198 -0.8755925 0.9017
Min 1.111583 1.6628564 -0.37723765 0.1217600 0.9017
Max 1.111583 0.2758934 0.09761946 1.3621307 0.9017
> head(M2)
Second Case Conversion Time Value Parameter Conversion Prob
Mean 1.111583 0.5137628 0.50627262 1.6387446 0.7674
Std 1.111583 0.3992718 0.34755198 -0.8755925 0.7674
Min 1.111583 1.6628564 -0.37723765 0.1217600 0.7674
Max 1.111583 0.2758934 0.09761946 1.3621307 0.7674
##
编辑:我的上一个示例不包含行名称 -
D1 <- data.frame(
cbind(
"Row.Name"=rownames(M1),
M1))
##
D2 <- data.frame(
cbind(
"Row.Name"=rownames(M2),
M2))
##
Wb <- loadWorkbook(
"matrixes.xlsx",
create=TRUE)
createSheet(
Wb,"newSheet")
##
writeWorksheet(
object=Wb,
data=D1,
rownames=NULL,
header=TRUE,
sheet="newSheet")
##
appendWorksheet(
object=Wb,
data=D2,
rownames=NULL,
sheet="newSheet",
header=TRUE)
##
saveWorkbook(Wb,file="matrices.xlsx")
哪个给你这个:
这比通常将多个对象写入电子表格需要更多的工作,因为我假设您想要包含每个矩阵的列名。尝试使用write.table
执行此操作,您会得到:
## Initial write works:
write.table(
M1,file="matrices.csv",
row.names=T,
col.names=T)
## append=TRUE gives warning when col.names=TRUE
## and file is malformed
write.table(
M2,file="matrices.csv",
append=TRUE,
row.names=T,
col.names=T)
Warning message:
In write.table(M2, file = "matrices.csv", append = TRUE, row.names = T, :
appending column names to file
因此,XLConnect
方法需要比平常更多的努力,但它提供了比write.csv
和write.table
更多的功能,比如自定义单元格格式化等......