在同一个Excel电子表格中写入两个R输出数据

时间:2014-09-09 14:07:10

标签: r excel output export-to-excel

我是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提出的另一种方法产生相同的输出?

1 个答案:

答案 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")

哪个给你这个: enter image description here

这比通常将多个对象写入电子表格需要更多的工作,因为我假设您想要包含每个矩阵的列名。尝试使用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

enter image description here

因此,XLConnect方法需要比平常更多的努力,但它提供了比write.csvwrite.table更多的功能,比如自定义单元格格式化等......