显示数据帧的输出

时间:2017-12-10 17:37:23

标签: r

我有一个棒球击球手的数据库,并开发了以下随机森林模型,以预测他们进入棒球名人堂的潜在成功(仅仅基于他们的击球成功,但也添加了诸如他们是否涉及类固醇的事情)。

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

我想要列出姓氏,理想情况下,要列出击球手的名字(如果有两个姓氏相同的人)。代码中的以下行让我进入数据框提取,在那里我可以看到结果并在报告中手动输入名称。

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

但是,我希望在不重新输入R的情况下将结果显示在R中。相反,当我到达代码z [z]时,我收到以下错误消息:

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

然后,没有它,表格和姓氏列表也不会显示。

您可以提供任何帮助,帮助我列出R输出中的姓氏,而无需从我从View中获取的表格中重新输入它们(z [z [,4] ==“是”&amp; z [, 3] ==“不”,])非常感谢。

1 个答案:

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

如果有人在没有创建两个新对象的情况下看起来更好一些,我会很感激指针。

再次感谢,Heikki!