R read.xlsx colClasses 问题
Posted
技术标签:
【中文标题】R read.xlsx colClasses 问题【英文标题】:R read.xlsx colClasses issue 【发布时间】:2015-09-29 13:49:36 【问题描述】:我在使用read.xlsx
中的colClasses
函数时遇到问题
我有以下data.frame
mydata <- read.xlsx("dataset_1.xlsx", sheetName = "dataset_1")
head(mydata)
Treatment Nitrate_conc
1 1 12
2 1 12
3 1 15
4 1 16
5 1 12
6 2 18
str(mydata)
data.frame': 20 obs. of 2 variables:
$ Treatment : num 1 1 1 1 1 2 2 2 2 2 ...
$ Nitrate_conc: num 12 12 15 16 12 18 25 26 28 28 ...
我想将Treatment
导入为factor
。为此,我尝试使用colClasses
函数作为参数,如下所示:
mydata1 <- read.xlsx("dataset_1.xlsx", sheetName = "dataset_1", colClasses = c("Treatment" = "factor", "Nitrate_conc" = "numeric"))
但是我得到以下错误:
class(aux) <- colClasses[ic]
中的错误: 将factor
类添加到无效对象
谁能指出我做错了什么?
【问题讨论】:
我觉得更多的是colClasses = c("factor", "numeric")
。
@Pascal docs 建议 colClasses
可以采用命名参数。
@RoryShaw 你检查过names(mydata)
以确保没有错误的空格吗?您也可以考虑使用其中一种,faster Excel 读取选项...我个人仅在文件中包含 Date
时才使用 read.xlsx
。
@MichaelChirico 感谢您的帮助并链接到其他方法。
@Pascal 相当肯定 colClassess 可以采用命名参数 - 它适用于 read.csv 等
【参考方案1】:
这是一个老问题,但似乎从未完全回答过。
这与colClasses
的列表元素是否被命名无关。该问题可以通过文档?read.xlsx
进行追踪。在描述colClasses
参数时,文档指向readColumns
的文档。在那里的描述中,它说
仅接受数字、字符、日期、POSIXct、列类型。 其他任何内容都将被转换为字符类型。
因此,不允许指定 'factor'
。另请注意,在...
下它说
data.frame 的其他参数,例如 stringsAsFactors
所以,我们可以使用
mydata <- read.xlsx("dataset_1.xlsx", sheetName = "dataset_1",
colClasses=c("character", "numeric"))
str(mydata)
'data.frame': 6 obs. of 2 variables:
$ Treatment : Factor w/ 2 levels "1","2": 1 1 1 1 1 2
$ Nitrate_conc: num 12 12 15 16 12 18
你也可以使用:
mydata <- read.xlsx("dataset_1.xlsx", sheetName = "dataset_1",
colClasses=c(Treatment = "character", Nitrate_conc = "numeric"))
看起来只有一个参数stringsAsFactors
,因此可能无法同时读取因子和字符串。当然,您始终可以在将列作为不同类型读取后将其转换为因子。
【讨论】:
以上是关于R read.xlsx colClasses 问题的主要内容,如果未能解决你的问题,请参考以下文章
R语言读取excel文件实战(read.xlsx函数read_excel函数read.xlsx函数Write函数)
R中非常缓慢或失败的xls数据提取[功能read.xls,read_xls,xlsx2等]