更改闪亮R中的活动数据框的列名称

时间:2016-11-29 18:12:14

标签: r shiny flexdashboard

我的代码看起来像这样:

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的第一行创建数据帧。当我尝试更改它的列名时,它会抛出一个错误:

enter image description here

所以,我尝试使用如上所述的ncol找到d_frame中的列数,返回2.但是,我不知道导致错误的是什么。你能帮帮我吗?

2 个答案:

答案 0 :(得分: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()
 })

答案 1 :(得分: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")
   )))