2017-12-10 7 views
0

私は野球の打者のデータベースを持っており、野球の殿堂入りに成功する可能性を予測するために、以下のランダムなフォレストモデルを開発しました(打撃成功のみに基づいています。彼らがステロイドに関与しているかどうか)。データフレームからの出力を表示

rf <- randomForest(HOF ~ runs + rbi + bb + hits + so + doubles + BA + 
hr + stolen_base + triples + Playing_Era + Banned + Steroids, data = batters, 
na.action=na.exclude, importance = TRUE) 

私は、モデルの条件を満たす選手の名前を抽出するコードを開発したいと考えています。次のように

予測と出力のための私が持っているコードは、次のとおりです。

p=predict(rf, na.action="na.exclude") 
length(p) 
length(batters$HOF) 
t=table(p, batters$HOF) 
t 

x=sum(table(predict(rf, na.action="na.exclude"), batters$HOF)) 

lname=vector() 
for (i in 1:10084){ 
    if (batters$HOF[i]=="No" & as.character(p[i])=="Yes") 
    lname[i]=batters$lastname[i] & fname[i]=batters$firstname[i] 
    else { 
    break 
    } 
} 

z=data.frame(batters$lastname, batters$firstname, batters$HOF,p) 

View(z[z[,4]=="Yes" & z[,3]=="No",]) 

z[z] 
table(z) 
lname 

私は、理想的には、打者の最初の名前を姓を好きでしょう(場合との2人がいます同じ姓)がリストされます。コードの次の行は、データフレーム抽出に行きます。ここで結果を確認し、レポートに名前を手動で入力できます。

View(z[z[,4]=="Yes" & z[,3]=="No",]) 

しかし、結果をRに表示して再入力することはできません。それなしで、テーブルと最後の名前のリストはどちらか表示されません、そして、

Error in [.default(z, z) : invalid subscript type 'list'

:私は、コードzに取得するときに代わりに、[z]は、私は、次のエラーメッセージが表示されます。

R出力の最後の名前を表示するのに役立つヘルプは、私がViewから取得したテーブルから再入力する必要はありません(z [z [、4] == "Yes" & z [ 3] == "いいえ"、))行がありがとうございます。

+0

なぜ 'z [z]'を試していますか? – Heikki

+0

なぜz [z]については、間違っていると思いますが、z [z]はデータフレームzにリストされている名前を返すと考えました。私はどんなアドバイスにも感謝しています。 –

+0

私はそれを理解したと思うし、私はそれがまっすぐであったことはまあまあだと感じる。あなたにヘッジをしてくれてありがとう。 –

答えて

0

エレガントではありませんが、いくつかの新しいオブジェクトを割り当てるだけで解決できました。

z1 <- (z[z[,4]=="Yes" & z[,3]=="No",]) 
z_complete <- z1[complete.cases(z1), ] 
z_final <- with(z_complete, z_complete[order(batters.lastname, batters.firstname, batters.HOF, p),]) 
z_final 

誰かが2つの新しいオブジェクトを作成せずに少し上手く見えるものを持っていれば、私はポインタを感謝します。

ありがとう、もう一度!

関連する問題