2017-11-25 114 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)