r - knnx.index() 函数返回 Data:non-numeric in r on r shiny webapp
问题描述
我正在 r 闪亮的平台上构建一个 webapp。我让用户选择一名足球运动员,并试图让输出显示另外 10 名具有相似属性的球员。我为选定的球员数据创建了一个子集,为未选定的球员创建了另一个子集。在我到达 knnx.index() 之前,一切都运行无错误,我试图在其中找到属性最接近所选玩家的 10 个玩家。然而,每次我这样做时,我都会收到错误:数据非数字。我检查了子集是否正确制作并且 rbind 是否正常工作并且一切正常。该错误似乎源于 knnx.index() 函数。
请,任何帮助将不胜感激!这是我的代码:
function(input, output, session) {
selectedData1 <- reactive({
filter(data,data$player != input$player)
})
selectedData2 <- reactive({
selectedData1() %>%
select(10,15,11,6,5,19,29,61,35,40,47,55,62,60) #%>%
filter(league %in% input$league) %>%
filter(Age >= input$age[1]) %>%
filter(Age <= input$age[2]) %>%
filter(Min >= input$minutes[1]) %>%
filter(Min <= input$minutes[2])
})
selectedData3 <- reactive({
data %>%
select(10,15,11,6,5,19,29,61,35,40,47,55,62,60) %>%
filter(data$player == input$player)
})
selectedData4 <- reactive({
rbind(selectedData3(),selectedData2())
})
selectedData5 <- reactive({
selectedData4() %>%
select(6:14)
})
selectedData6 <- reactive({
as.numeric(knnx.index(selectedData5(), selectedData5()[1, , drop=FALSE], k=11))
})
selectedData7 <- reactive({
selectedData4()[selectedData6(),]
})
selectedData8 <- reactive({
selectedData7() %>%
select(6:14)
})
# Combine the selected variables into a new data frame
output$plot1 <- renderPlotly({
validate(
# need(dim(selectedData2())[1]>=10, "Sorry, no ten similar players were found.
# Please change the input filters."
# )
)
plot_ly(
type = 'scatterpolar',
mode = "closest",
fill = 'toself'
) %>%
add_trace(
r = as.matrix(selectedData8()[1,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
name = selectedData7()[1,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[2,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[2,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[3,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[3,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[4,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[4,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[5,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[5,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[6,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[6,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[7,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[7,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[8,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[8,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[9,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[9,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[10,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[10,1]
) %>%
add_trace(
r = as.matrix(selectedData8()[11,]),
theta = c("TouchIndex","PassIndex","PostRecFwdPass","Creation","Team Attack","Total Disruption","Ball Winning","Individual Defending","TeamDefending"),
showlegend = TRUE,
mode = "markers",
visible="legendonly",
name = selectedData7()[11,1]
) %>%
layout(
polar = list(
radialaxis = list(
visible = T,
range = c(0,100)
)
),
showlegend=TRUE
)
})
}