で列を選択:Rシャイニー私はcol_numのためにint型を渡すときは、次のコードが動作する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)
}
は、私は(この関数が呼び出されることができるように、ユーザーがcheckboxGroupInputでcol_numを選択できるようにしたいです複数回)。
私はこのようなcheckboxGroupInputを持つユーザーの入力をプリントアウトすることができます。
output$text5 <- renderText({
paste("The object you selected is ",
input$select_columns2)
})
だから、入力の$ select_columns2は、列の名前の文字列が含まれています。
私は、列名の代わりにint型の文字列を組み込むためにその機能を書き換えてみました:
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)
}
私はこれで、この関数を呼び出しています:
reactiveHRdata = reactive({
makeHRdata(get(input$select_test_data2),eecs,input$select_columns2)
})
I私が取得エラー範囲(Test $ col_num)のエラー[1]:範囲(Test $ col_num)[2]: 結果が長すぎるベクトル
範囲は0〜63ですが、これは確かに「長すぎる」ものではありません。私はintで列を指定すると、このエラーは発生しません。
また、変数col_numを使用する代わりに、カラム名を記述するだけで新しい関数をテストしたところ、完全に機能しました。 (HRは列名です。):
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)
}
列名を文字列として渡してすべてを動かすことができますか?本当にありがとう!
それがうまくいった!面白いエラーでした。あなたの助けをありがとう! –