0

我想将数据框导出到 xls 文件。我找到了 XLConnect 库,它很容易使用,但我不介意尝试其他东西。

我遇到的问题出在输出(xls 文件)中。由于我的数据框包含像“A_B”这样的字符串,因此输出在每个整数之前都包含字符“。这对我来说是个问题,因为我需要 OpenOffice 来检测带有整数的列,以便以后能够应用公式。

这是一个没有任何问题的小例子,这意味着 xls 文件中的每个条目都是一个整数。

library(XLConnect)
test = as.data.frame(matrix(c(0,0),nrow=1),stringsAsFactors = FALSE)
wb =loadWorkbook('file.xls',create=TRUE)
createSheet(wb, name = "test")
writeWorksheet(wb,test,'test',header=FALSE)
saveWorkbook(wb)

在以下示例中会出现此问题。

library(XLConnect)
test = as.data.frame(matrix(c(0,'A_B'),nrow=1),stringsAsFactors = FALSE)
wb =loadWorkbook('file.xls',create=TRUE)
createSheet(wb, name = "test")
writeWorksheet(wb,test,'test',header=FALSE)
saveWorkbook(wb)

在最后一个示例中,xls 文件中的第一个条目是 '0,它在 OpenOffice 中未被检测为整数。

有没有办法从输出数据中删除字符 ' ?

谢谢

4

1 回答 1

1

在 XLConnect 中,a 的列类型data.frame决定了生成的单元格类型。例如character,列导致字符串/文本单元格,而numeric列导致数字单元格。

在您的示例中,表达式c(0, 'A_B')会生成一个character向量(R 会自动将您强制0转换为character),因此写入的结果单元格将是字符串/文本单元格(请参阅str(test)调查您的data.frame)。因此,您应该通过简单地构建data.frame不同的方式来解决问题,例如通过执行以下操作:

test = data.frame(NumericColumn = 0, TextColumn = "A_B", stringsAsFactors = FALSE) str(test)

查看您的输出str(test)现在应该看到“NumericColumn”是一numeric列,而“TextColumn”是一character列。使用 XLConnect编写data.frame时,您将看到生成的单元格将具有适当的单元格类型。

于 2016-02-23T15:51:55.853 回答