使用包xlsx导出到excel时存储为文本的数字

时间:2014-07-25 21:43:39

标签: excel xlsx

我正在使用R3.1.1和xlsx包。我也使用excel 2007软件。当我有一个大数据框时,数据将作为文本导出到excel。我尝试过使用wb = set_optimization()而没有任何运气。 例如,如果我使用此数据框:

size1<-rnorm(100,5000,2000)
size2<-rnorm(100,5000,2000)
size3<-rnorm(100,5000,2000)
name1<-paste("RNORM",seq(1,100,1), sep<-"")
fold1<-rnorm(100,4,2)
fold2<-rnorm(100,3,1)
fold3<-rnorm(100,2,0.5)
N1<-sample(18:36,100, replace <- TRUE)
df<-cbind(name1,N1,size1,size2,size3,fold1,fold2,fold3)

wb <- createWorkbook()
sheet.1 <- createSheet(wb, sheetName="test1")
sheet.2 <- createSheet(wb, sheetName="test2")
addDataFrame(df, sheet=sheet.1,  row.names=FALSE, startRow = 1, startColumn = 1)
addDataFrame(df, sheet=sheet.2,  row.names=FALSE, startRow = 1, startColumn = 1)
saveWorkbook(wb, "testing1.xlsx")

所有数字都以文本形式存储在Excel工作簿中。如何删除此编码以使最终文件更易于阅读?

1 个答案:

答案 0 :(得分:0)

在一组向量上使用cbind时,它会返回一个矩阵。由于矩阵只是一个二维向量,因此所有值必须是相同的类型。

由于name1向量是一个字符向量,所有其他向量也被强制转换为字符以满足此约束。

要获得预期结果,您可以改为使用data.frame

df <- data.frame(name1, N1, size1, size2, size3, fold1, fold2, fold3)

wb <- createWorkbook()
sheet.1 <- createSheet(wb, sheetName = "test1")
sheet.2 <- createSheet(wb, sheetName = "test2")
addDataFrame(df, sheet = sheet.1,  row.names = FALSE, startRow = 1, startColumn = 1)
addDataFrame(df, sheet = sheet.2,  row.names = FALSE, startRow = 1, startColumn = 1)
saveWorkbook(wb, "testing1.xlsx")