Эффект colClasses в функции read.csv
Я хочу, чтобы функция выдавала только символьное значение в качестве вывода, но когда read.csv принимает значение по умолчанию для colClasses, появляется дополнительный вывод со значением символа. Почему моя функция работает хорошо, когда я указываю colClasses = "character", а не иначе?
top <- function(state, outcome) {
a <- read.csv("outcome-of-care-measures.csv")
if (outcome == "heart attack") {
data <- a[a[[7]]==state,]
x <- suppressWarnings(as.numeric(data[[11]]))
y <- min(x, na.rm = TRUE)
index <- which(x == y)
z <- data[index,2]
z1 <- sort(z)
print(z1[1])
}
}
вывод (с нежелательной информацией об уровнях)
> top("TX", "heart attack")
[1] CYPRESS FAIRBANKS MEDICAL CENTER
4510 Levels: ABBEVILLE AREA MEDICAL CENTER ... ZUNI COMPREHENSIVE COMMUNITY HEALTH CENTER
1 ответ
Решение
Факторы (тип данных R использует для хранения категориальных переменных) несут свои возможные уровни вместе с ними, и они печатаются по умолчанию. Есть множество решений:
- использование
colClasses
при чтении данных, как вы предложили; - использование
stringsAsFactors=FALSE
- прочитайте файл как обычно, затем используйте
print(as.character(z1[1]))
- использование
print(z1[1],max.levels=0)