Эффект 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)
Другие вопросы по тегам