【发布时间】:2019-07-25 00:07:45
【问题描述】:
我读了很多关于Rpromises(包括this)的文章,但还是不明白。
见代码:
library(future)
library(promises)
plan(multiprocess)
read.csv.async <- function(file, header = TRUE, stringsAsFactors = FALSE) {
future({
read.csv(file, header = header, stringsAsFactors = stringsAsFactors)
})
}
df_promise <- read.csv.async("https://rstudio.github.io/promises/data.csv")
df_promise %...>% filter(state == "NY")
df_filtered_promise <- df_promise %...>% filter(state == "NY")
df_filtered_promise
class(df_filtered_promise)
输出:
> read.csv.async <- function(file, header = TRUE, stringsAsFactors = FALSE) {
+ future({
+ read.csv(file, header = header, stringsAsFactors = stringsAsFactors)
+ })
+ }
>
> df_promise <- read.csv.async("https://rstudio.github.io/promises/data.csv")
>
> df_promise %...>% filter(state == "NY")
>
> df_filtered_promise <- df_promise %...>% filter(state == "NY")
>
> df_filtered_promise
<Promise [pending]>
> df_filtered_promise
<Promise [fulfilled: data.frame]>
> class(df_filtered_promise)
[1] "promise"
为什么fullfilled promise 不返回它的值?在我的情况下如何提取数据框?
【问题讨论】:
-
@r2evans 我不是问
future是如何工作的,而是promises。 -
抱歉,我以为他们已经够近了,但你说得对,我赶时间。
-
代码对我不起作用:> read.csv.async df_promise rstudio.github.io/promises/data.csv") > df_promise %...>% filter(state == "NY") df_promise 中的错误 %...> % filter(state == "NY") : 找不到函数 "%...>%"
-
@DanielFischer 只需添加
library(promises) -
我发现他们的documentation 有点不完整:例如,我可以执行
df_promise %...>% print(),它会打印出来,但我不想打印出来 ,我希望它实现/收集。我想知道promises的意图是否真的不像shiny那样具有用户交互性(它运作良好)。
标签: r asynchronous promise future