【问题标题】:Change column name of a reactive data frame in shiny R [closed]在闪亮的R中更改反应数据框的列名[关闭]
【发布时间】:2017-04-13 20:39:59
【问题描述】:

我的代码看起来像这样:

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。但是,我不知道是什么导致了错误。你能帮我解决这个问题吗?

【问题讨论】:

  • 您的d_frame 是一个函数,因此所有更新都需要在反应式表达式或观察者中
  • @PorkChop:我按如下所述进行了更改,但仍然没有运气。你能帮忙吗?我是 R Shiny 的新手。

标签: r shiny flexdashboard


【解决方案1】:

在您的示例中,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")
   )))

【讨论】:

  • 我添加了上面提到的 col.names 但我仍然看不到列名,它仍然以 V1 和 V2 的形式出现。进一步的代码是这样的:subset_dataset
  • 还有这方面的信息吗?
【解决方案2】:

试试这样的。请注意,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()
 })

【讨论】:

  • 它给出错误:“
  • 我不知道您是如何构建数据框 d_frame() 您需要提供更多代码,包括 intarr()readlinesop()
  • 这行得通!谢谢。但是你能解释一下导致错误的原因吗?
  • 我认为我们不能直接更改反应函数的列名,您必须先将内容放入变量中
猜你喜欢
  • 2013-12-22
  • 2015-03-21
  • 2016-02-10
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
相关资源
最近更新 更多