Coursera作业3'按州的结果对医院进行排名'

时间:2017-04-02 13:21:24

标签: r

我正在使用WIn7 64x Rstudio版本3.3.2

以下功能是我通过查看其他人的解决方案创建的课程中的分配3解决方案。 我有2个qeustions。

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 个答案:

答案 0 :(得分:1)

好的,我会尽力做好,但你不应该复制答案,特别是如果你不理解它。但是要回答你的问题:首先,你可以看到stringsAsFactors设置R如何处理.csv中的字符串。设置为FALSE时,它会将它们视为字符并以这种方式导入它们。设置为TRUE(或根本未设置)时,会将其视为因素。这就是为什么你看到它在关卡中显示的原因。其次,代码正在创建result,这是hospital的{​​{1}}列,只有符合cr条件的数据。