在闪亮的 R 中更改反应式数据框的列名
Change column name of a reactive data frame in shiny R
我有一个看起来像这样的代码:
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 的第一行创建了一个数据框。当我尝试更改它的列名时,它会抛出一个错误:
因此,我尝试使用上面提到的返回 2 的 ncol 查找 d_frame 中的列数。但是,我不知道是什么导致了错误。你能帮我解决这个问题吗?
在您的示例中,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")
)))
尝试这样的事情。请注意 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<-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 的第一行创建了一个数据框。当我尝试更改它的列名时,它会抛出一个错误:
因此,我尝试使用上面提到的返回 2 的 ncol 查找 d_frame 中的列数。但是,我不知道是什么导致了错误。你能帮我解决这个问题吗?
在您的示例中,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")
)))
尝试这样的事情。请注意 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()
})