read.csv 函数中 colClasses 的作用
effect of colClasses in read.csv function
我希望函数只给出一个字符值作为输出,但是当 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
因子(R 用于存储分类变量的数据类型)带有它们可能的水平,默认情况下会打印这些水平。有多种解决方案:
- 按照您的建议读取数据时使用
colClasses
;
- 使用
stringsAsFactors=FALSE
- 照常读取文件,然后使用
print(as.character(z1[1]))
- 使用
print(z1[1],max.levels=0)
我希望函数只给出一个字符值作为输出,但是当 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
因子(R 用于存储分类变量的数据类型)带有它们可能的水平,默认情况下会打印这些水平。有多种解决方案:
- 按照您的建议读取数据时使用
colClasses
; - 使用
stringsAsFactors=FALSE
- 照常读取文件,然后使用
print(as.character(z1[1]))
- 使用
print(z1[1],max.levels=0)