-2

次のようなコードがあります。

d_frame<-reactive(unique(as.data.frame(do.call("rbind", sapply(1:(length(intarr())), 
FUN = function(i) c(substr(readlinesop()
[intarr()[i]+1],17,26),substr(readlinesop()[intarr()[i]+2],17,26)), simplify = FALSE)))))

bv<-reactive(ncol(d_frame()))
colnames(d_frame) <- c("Sand", "Water")
subset_dataset <-eventReactive(input$go, {d<-bv()})

出力 d_frame を持つ最初の行は、データ フレームを作成します。これの列名を変更しようとすると、エラーがスローされます:

ここに画像の説明を入力

そこで、上記の ncol を使用して d_frame の列数を見つけようとしましたが、これは 2 を返しました。しかし、エラーの原因はわかりません。これで私を助けてもらえますか?

4

2 に答える 2

1

このようなことを試してください。d_frame()はリアクティブ関数であることに注意してください。計算では、使用しますd_frame2()

 d <- NULL
 d_frame <-
   reactive(unique(as.data.frame(do.call(
     "rbind", sapply(
       1:(length(intarr())),
       FUN = function(i)
         c(substr(readlinesop()
                  [intarr()[i] +
                      1], 17, 26), substr(readlinesop()[intarr()[i] + 2], 17, 26)),
       simplify = FALSE
     )
   ))))

 bv <- reactive(ncol(d_frame()))
 d_frame2 <- reactive({
   testdata <- d_frame()
   colnames(testdata) <- c("Sand", "Water")
   testdata
 })

 subset_dataset <- eventReactive(input$go, {
   d <<- bv()
 })
于 2016-11-30T08:29:59.660 に答える
0

あなたの例でd_frameは、data.frame自体ではなく、data.frameを返すリアクティブ関数です。

ビルド時に列名を設定できます。

d_frame <-
   reactive(unique(as.data.frame(
     do.call("rbind", sapply(
       1:(length(intarr())),
       FUN = function(i)
         c(substr(readlinesop()[intarr()[i] + 1], 17, 26),
           substr(readlinesop()[intarr()[i] + 2], 17, 26)),
       simplify = FALSE
     )), col.names <- c("Sand", "Water")
   )))
于 2016-11-29T18:17:50.923 に答える