R闪亮的反应()函数可以返回多个值吗?
Posted
技术标签:
【中文标题】R闪亮的反应()函数可以返回多个值吗?【英文标题】:R shiny can reactive() function return multiple values? 【发布时间】:2016-08-11 11:17:44 【问题描述】:我正在使用响应函数来同时做两件事:
-
读取上传的csv文件;
获取文件名
请看下面的代码:
file_info<-reactive(
filename <- file.choose()
data <- read.csv(filename, skip=1)
file_name <- basename(filename)
)
然而,file_info() 只包含 file_name,这迫使我编写另一个反应函数来上传数据:
Raw<- reactive(
inFile <- input$file1
if (is.null(inFile))
return(NULL)
Raw<-read.csv(inFile$datapath, header=TRUE ,sep=",")
)
我认为应该有另一种有效的方法来做到这一点,提前感谢您的任何建议。
【问题讨论】:
在file_info
末尾添加:list(data=data, file_name=file_name)
。然后,当您调用 file_info()
时,您会得到一个包含文件名和数据的列表。
如果你真的想要两者兼得,@nicola 的答案就是这样。但是您可以使用fileInput
而不是file.choose
。
【参考方案1】:
R 中的返回值应包含在单个对象中,在 function
s 或 reactive
s 中。但是,我建议将您的内容收集在一个列表中,并从您的响应式变量中获取返回值。然后,从这个临时变量中得到你想要的。喜欢:
myReactive(
# does stuff
return(
list(
val1 = val1,
val2 = val2
)
)
.tmp <- myReactive()
x <- .tmp$val1
y <- .tmp$val2
【讨论】:
以上是关于R闪亮的反应()函数可以返回多个值吗?的主要内容,如果未能解决你的问题,请参考以下文章
闪亮的 renderUI selectInput 返回 NULL