RStudio版関数に渡されていません。引数が正しく
関数の構造は、このようなものです:rankall < - 機能(結果、NUM =「最善」)
outcome
は結果を注文する規格であり、そしてnum
はランクが選択する機能に指示します。
この関数はnum = "best"
とother numeric numbers
で正しい結果を返すことができますが、正しい結果を"worst"
とすることはできません。関数のコードは次のようにされています。問題は、私はnum
にoutcome
から"pneumonia"
、および"worst"
を与えようと試み、ある場所を確認するには
>tail(rankall("pneumonia", "worst"), 3)
hos_req sta_req
WI "MINISTRY DOOR COUNTY MEDICAL CENTER" "WI"
WV "MONTGOMERY GENERAL HOSPITAL, INC" "WV"
WY "EVANSTON REGIONAL HOSPITAL" "WY"
There were 46 warnings (use warnings() to see them)
:
rankall <- function(outcome, num = "best") {
## Read outcome data
datful <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
## Check that state and outcome are valid
if(outcome == "heart attack"){
oc <- 11
} else if(outcome == "heart failure"){
oc <- 17
} else if(outcome == "pneumonia"){
oc <- 23
} else {
"invalid outcome"
}
## For each state, find the hospital of the given rank
StaUni <- unique(datful[,7])
StaUni <- sort(StaUni)
sta_req <- c()
hos_req <- c()
out_req <- c()
for(i in StaUni){
##For each state, assemble a data.frame
good <- datful[, 7] == i
Sta_i <- datful[, 7][good]
Hos_i <- datful[, 2][good]
Out_i <- as.numeric(datful[, oc][good])
out_na <- is.na(Out_i)
Sta_i <- Sta_i[!out_na]
Hos_i <- Hos_i[!out_na]
Out_i <- Out_i[!out_na]
Obs_i <- data.frame(Sta_i, Hos_i, Out_i)
##Reoder each data.frame
Obs_i <- Obs_i[order(Obs_i[, 3], Obs_i[, 2]),]
## Change the value of num depend on it's value.
if(num == "best"){
num = 1
} else if(num == "worst"){
num = sum(good)
} else {
num = num
}
hos_req[i] <- as.character(Obs_i[num, 2])
sta_req[i] <- as.character(Obs_i[num, 1])
out_req[i] <- as.numeric(Obs_i[num, 3])
}
## Return a data frame with the hospital names and the
## (abbreviated) state name
DFReq <- cbind(hos_req, sta_req)
DFReq
}
結果はこのようなものです。他のすべては関数のように残されています(関数ではないことを除いて、問題のどこにあるかだけを知りたい)。
## Read outcome data
datful <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
## Check that state and outcome are valid
## For each state, find the hospital of the given rank
StaUni <- unique(datful[,7])
StaUni <- sort(StaUni)
sta_req <- c()
hos_req <- c()
out_req <- c()
for(i in StaUni){
##For each state, assemble a data.frame
good <- datful[, 7] == i
Sta_i <- datful[, 7][good]
Hos_i <- datful[, 2][good]
Out_i <- as.numeric(datful[, 23][good])
out_na <- is.na(Out_i)
Sta_i <- Sta_i[!out_na]
Hos_i <- Hos_i[!out_na]
Out_i <- Out_i[!out_na]
Obs_i <- data.frame(Sta_i, Hos_i, Out_i)
##Reoder each data.frame
Obs_i <- Obs_i[order(Obs_i[, 3], Obs_i[, 2]),]
## Change the value of num depend on it's value.
hos_req[i] <- as.character(Obs_i[length(Sta_i), 2])
sta_req[i] <- as.character(Obs_i[length(Sta_i), 1])
out_req[i] <- as.numeric(Obs_i[length(Sta_i), 3])
}
## Return a data frame with the hospital names and the
## (abbreviated) state name
DFReq <- cbind(hos_req, sta_req)
DFReq
結果の最後の3行は、この(正しい答えである)のようなものです::
WI "MAYO CLINIC HEALTH SYSTEM - NORTHLAND, INC" "WI"
WV "PLATEAU MEDICAL CENTER" "WV"
WY "NORTH BIG HORN HOSPITAL DISTRICT" "WY"
誰でも機能を動作させるために変更するものを私に伝えることができるコードは次のようですいつnum = "worse"
?誰もがコードを実行するために
は、ここでのデータです:コメントで私たちの交換に基づいて
https://dl.dropboxusercontent.com/u/1174148/outcome-of-care-measures.csv
@ChiPak @ChiPak @ChiPak私の考えと同じように、あなたの解決策は機能しません。 Falseは0、Trueは1なので、sum(good)は同じになります。とにかくありがとう。 – Ryan
@Ryanあなた自身の質問を解決した場合は、質問の本文に編集するのではなく、回答として投稿してください。これにより、将来の読者は解決策を見つけるのに役立ちます。 – Llopis
@Llopis答えが見つからず、2番目の部分は関数ではありません。引数のテスト値を関数の中に入れて、うまく動作するテスト値の答えを計算します。しかし、私がテスト値で関数を使用すると、結果は間違っています。 – Ryan