R read.xlsx colClasses проблема
У меня проблема с использованием colClasses
функция в read.xlsx
У меня есть следующее 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
к недействительному объекту
Кто-нибудь может указать, что я делаю не так?
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
поэтому может быть невозможно прочитать оба фактора и строки одновременно. Конечно, вы всегда можете преобразовать столбец в фактор после прочтения его как другого типа.