2017-11-25 111 views
1

我希望函数只给出一个字符值作为输出,但是当read.csv使用colClasses的默认值时,会有额外的字符值输出。为什么当我指定colClasses =“character”而不是其他方式时,我的函数运行良好?col.classes在read.csv函数中的作用

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编程编程分配3所述的分配方向*课程上Coursera清楚状态使用'当使用'read.csv()'读取数据时stringsAsFactors = FALSE'。此外,您在互联网上发布完整版本的“best()”函数,违反了Coursera荣誉代码。 –

+0

我已经发布了整个代码的一小部分,它甚至没有按照它应该的方式运行。尽管如此,我了解您的担忧,并且我已更改了该职能的名称,以免发生抄袭行为。有人会认识到这一点的唯一方法就是阅读你的评论 – s0ulr3aper07

回答

3

因素(数据类型R用于存储分类变量)携带他们的可能电平与他们一起,并且这些默认打印。有多种解决方案:

  • 使用colClasses当您按照您的建议读取数据时;
  • 使用stringsAsFactors=FALSE
  • 读取文件像往常一样,然后使用print(as.character(z1[1]))
  • 使用print(z1[1],max.levels=0)