2017-04-02 35 views
-1

我使用Win7的64倍Rstudio版本3.3.2Coursera分配3

下面的函數「通過結果的狀態排名醫院」是coursera分配3的解決方案,我已經通過看其他人的解決方案創建的。 我有2個問題。

best <- function(state, outcome) { 
    data<-read.csv('outcome-of-care-measures.csv',colClasses = 'character') 
    frame<-as.data.frame(cbind(data[,2], 
         data[,7], 
         data[,11], 
         data[,17], 
         data[,23]), 
         stringsAsFactors=FALSE) 
    colnames(frame)<-c('hospital','state','heart attack','heart failure', 
        'pneumonia') 
    if(!state %in% frame[,'state']){ 
     stop('invalid state') 
     } 
    else if(!outcome %in% c('hostpital','state','heart attack','heart failure', 
          'pneumonia')){ 
     stop('invalid outcome') 
    } 
    else{ 
     wh<-which(frame[,'state']==state) 
     cr<-frame[wh,] 
     num<-as.numeric(cr[,outcome]) 
     minval<-min(num, na.rm=TRUE) 
     result<-cr[,'hospital'][which(num==minval)] 
     output<-result[order(result)] 
    } 
    return(output) 
    } 

在此功能中,首先我不知道用 「stringAsFactors = FALSE」 的。

frame<-as.data.frame(cbind(data[,2], 
        data[,7], 
        data[,11], 
        data[,17], 
        data[,23]), 
        **stringsAsFactors=FALSE**) 

我已經通過「read.csv」 stingAsFactors「讀幫助文檔,我不明白。

當我刪除這個( 'stingAsFactors = FALSE'/函數的名字是BEST2),回報是

BEST2( 'SC', '心臟發作')

[1] MUSC MEDICAL CENTER 
4510 Levels: ABBEVILLE AREA MEDICAL CENTER ABBEVILLE GENERAL HOSPITAL ... ZUNI COMPREHENSIVE COMMUNITY HEALTH CENTER 

當我不刪除此,回報是

最佳( 'SC', '心臟發作')

[1] "MUSC MEDICAL CENTER" 
Warning message: In best("SC", "heart attack") : NAs introduced by coercion 

第二個問題

result<-cr[,'hospital'][which(num==minval)] 

方括號中會出現一個接一個?在這種情況下,'cr數據'是否適用於兩個方括號?

如果你能分辨出這個問題,我將非常感激。

回答

1

好吧我會努力做到好,但是你不應該真的在複製答案,特別是如果你不明白的話。但要回答您的問題:首先,您可以看到stringsAsFactors設置R如何處理.csv中的字符串。當設置爲FALSE時,它將它們視爲字符並以這種方式導入它們。當設置爲TRUE(或根本不設置)時,它將它們視爲因素。這就是爲什麼你看到它顯示在水平上。其次,代碼正在創建result,這是hospital列的cr,並且只有符合給定條件num=minval的數據。

+0

謝謝。我知道如何使用'stringsAsFactors'。 我將新創建一個自己的作業,而不是作弊。非常感謝你 :) – JeongHansol