Der folgende Code funktioniert, wenn ich einen int in für col_num passieren:R Shiny wählen Spalte von checkboxGroupInput
makeHRdata = function(Test, model, col_num) {
means = 1:length(Test)
for (i in 1:length(Test)) means[i] = mean(Test[,i])
TestCopy = Test[1,]
TestCopy[1,] = t(means)
pdpHR = range(Test[col_num])
for (i in range(Test[col_num])[1]:range(Test[col_num])[2]) {
TestCopy[1,col_num] = i
pdpHR[i] = predict(model,TestCopy)
}
return(pdpHR)
}
Ich möchte Benutzer in der Lage sein, die col_num in einem checkboxGroupInput auszuwählen (diese Funktion ermöglichen aufgerufen werden mehrmals).
ich ausdrucken kann die Eingabe des Benutzers mit checkboxGroupInput wie folgt aus:
output$text5 <- renderText({
paste("The object you selected is ",
input$select_columns2)
})
So Eingang $ select_columns2 enthält eine Reihe von Namen einer Spalte.
Ich habe versucht, diese Funktion Umschreiben der Zeichenfolge anstelle des int für Spaltennamen zu übernehmen:
makeHRdata = function(Test, model, col_num) {
means = 1:length(Test)
for (i in 1:length(Test)) means[i] = mean(Test[,i])
TestCopy = Test[1,]
TestCopy[1,] = t(means)
pdpHR = range(Test$col_num)
for (i in range(Test$col_num)[1]:range(Test$col_num)[2]) {
#TestCopy[1,col_num] = i
TestCopy$col_num[1] = i
pdpHR[i] = predict(model,TestCopy)
}
return(pdpHR)
}
ich diese Funktion mit diesem Aufruf:
reactiveHRdata = reactive({
makeHRdata(get(input$select_test_data2),eecs,input$select_columns2)
})
Die Störung, die ich erhalte, wenn ich versuchen, das ist: Fehler im Bereich (Test $ col_num) [1]: Bereich (Test $ col_num) [2]: Ergebnis wäre zu lang ein Vektor
Der Bereich ist 0 bis 63, was sicherlich nicht "zu lang" ist. Und ich bekomme diesen Fehler nicht, wenn ich die Spalte mit einem int spezifiziere.
Außerdem habe ich meine neue Funktion getestet, indem ich nur einen Spaltennamen geschrieben habe, anstatt die Variable col_num zu verwenden, und es hat perfekt funktioniert. (HR ist ein Spaltenname.):
makeHRdata = function(Test, model, col_num) {
means = 1:length(Test)
for (i in 1:length(Test)) means[i] = mean(Test[,i])
TestCopy = Test[1,]
TestCopy[1,] = t(means)
pdpHR = range(Test$HR)
for (i in range(Test$HR)[1]:range(Test$HR)[2]) {
TestCopy$HR[1] = i
pdpHR[i] = predict(model,TestCopy)
}
return(pdpHR)
}
Jede Idee, was ich kann in dem Spaltennamen als String übergeben tun und haben alles funktionieren? Vielen Dank!
Das hat funktioniert! War ein lustiger Fehler, haha. Vielen Dank für deine Hilfe! –