1

我是 R 的初学者,我想从 R 创建一个 xlsx 文件。我的数据框定义为:

SP : List of 8
 $ WL          : num [1:1201] 200 200 201 202 202 ...
 $ t           : num [1:872, 1] 0.499 0.999 1.499 1.999 2.499 ...
 $ SP          : int [1:872, 1:1201, 1] 380 405 447 431 419 436 439 434 422 447 ...
 $ TF          : int [1:872, 1] 0 1 2 3 4 5 6 7 8 9 ...
 $ SpectraCount: num 872
 $ TStamp      : chr "12/01/2011 03:09:32PM"
 $ IT          : int 100
 $ SourceCount : num 1 

我想将 转换data.frame为一个表,其中 的每个值一列, 的每个值WL一行,表内的值作为和t的组合的 SP 。结果表如下所示:WLt

               WL 1,.......... 1201
            t
            1         (SP values)
            .
            827

如果我把

write.csv(SP1, file="SP1.csv", row.names = FALSE)

然后我在data.frame中有错误(WL = c(200、200.5、201、201.5、202、202.5、203、203.5,:参数暗示不同的行数:1201、872、1

4

2 回答 2

1

也许生成一个 csv 文件就足够了。Excel 可以读取 csv 文件。看write.csv这个。

否则,有write.xlsdataframes2xls包,或write.xlsxxlsx包。

于 2013-03-28T11:57:32.823 回答
1

据我所知,没有任何 Excel 界面可以处理参差不齐的列表——您需要将其转换为矩形数据结构。

您当然可以遍历列表的列并编写它们,但我认为您最好将列表填充到 data.frame 中:

> l <- list(a="foo", b=c(1,2,3), d=(1.0,2.0,3.0,4.0))
> rows <- max(unlist(lapply(l, length)))
> padded <- lapply(l, function(col) c(col, rep(NA, rows-length(col))))
> as.data.frame(padded)
     a  b d
1  foo  1 1
2 <NA>  2 2
3 <NA>  3 3
4 <NA> NA 4

然后,您可以将任何 Excel 包与我最喜欢的XLConnect 一起使用

> library(XLConnect)
> writeWorksheetToFile(file="out.xlsx", data=as.data.frame(padded), sheet="Output")
于 2013-03-28T12:44:17.357 回答