R read.xlsx colClasses 问题
R read.xlsx colClasses issue
我在 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"))
但是我收到以下错误:
Error in class(aux) <- colClasses[ic]
:
adding class factor
to an invalid object
谁能指出我做错了什么?
这是一个老问题,但似乎从未得到完整解答。
这与 colClasses
的列表元素是否命名无关。可以通过文档 ?read.xlsx
追踪问题。在描述 colClasses
参数时,文档指向 readColumns
的文档。在那里的描述中,它说
Only numeric, character, Date, POSIXct, column types are accepted.
Anything else will be coverted to a character type.
因此不允许指定 'factor'
。另请注意,在 ...
下显示
other arguments to data.frame, for example 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
所以可能无法同时读取两个因子和字符串。当然,在将列作为不同类型读取后,您始终可以将其转换为因子。
我在 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"))
但是我收到以下错误:
Error in
class(aux) <- colClasses[ic]
: adding classfactor
to an invalid object
谁能指出我做错了什么?
这是一个老问题,但似乎从未得到完整解答。
这与 colClasses
的列表元素是否命名无关。可以通过文档 ?read.xlsx
追踪问题。在描述 colClasses
参数时,文档指向 readColumns
的文档。在那里的描述中,它说
Only numeric, character, Date, POSIXct, column types are accepted. Anything else will be coverted to a character type.
因此不允许指定 'factor'
。另请注意,在 ...
下显示
other arguments to data.frame, for example 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
所以可能无法同时读取两个因子和字符串。当然,在将列作为不同类型读取后,您始终可以将其转换为因子。