我正在使用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数据'是否应用于两个方括号?
如果你能说出这个问题,我将非常感激。
答案 0 :(得分:1)
好的,我会尽力做好,但你不应该复制答案,特别是如果你不理解它。但是要回答你的问题:首先,你可以看到stringsAsFactors
设置R如何处理.csv中的字符串。设置为FALSE
时,它会将它们视为字符并以这种方式导入它们。设置为TRUE
(或根本未设置)时,会将其视为因素。这就是为什么你看到它在关卡中显示的原因。其次,代码正在创建result
,这是hospital
的{{1}}列,只有符合cr
条件的数据。