我有以下几点:
# A tibble: 18 × 6
id columnFilter modelName model train.X train.Y
<int> <chr> <chr> <list> <list> <list>
1 1 groupedColumns.donr boostModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
2 2 groupedSquaredColumns.donr boostModel <fun> <tibble [3,984 × 28]> <fctr [3,984]>
3 3 groupedTransformedColumns.donr boostModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
4 4 ungroupedColumns.donr boostModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
5 5 ungroupedSquaredColumns.donr boostModel <fun> <tibble [3,984 × 28]> <fctr [3,984]>
6 6 ungroupedTransformedColumns.donr boostModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
7 7 groupedColumns.donr ldaModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
8 8 groupedSquaredColumns.donr ldaModel <fun> <tibble [3,984 × 28]> <fctr [3,984]>
9 9 groupedTransformedColumns.donr ldaModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
10 10 ungroupedColumns.donr ldaModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
11 11 ungroupedSquaredColumns.donr ldaModel <fun> <tibble [3,984 × 28]> <fctr [3,984]>
12 12 ungroupedTransformedColumns.donr ldaModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
13 13 groupedColumns.donr logitModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
14 14 groupedSquaredColumns.donr logitModel <fun> <tibble [3,984 × 28]> <fctr [3,984]>
15 15 groupedTransformedColumns.donr logitModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
16 16 ungroupedColumns.donr logitModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
17 17 ungroupedSquaredColumns.donr logitModel <fun> <tibble [3,984 × 28]> <fctr [3,984]>
18 18 ungroupedTransformedColumns.donr logitModel <fun> <tibble [3,984 × 17]> <fctr [3,984]>
如您所见,modelName
是模型的名称,存储为model
中的函数。
我想要做的是每行,调用存储在model
中的函数,将其作为参数传递给train.X
和train.Y
,并将函数的输出存储到一个新栏目。
从概念上讲,类似于:
df %>% mutate(result = pmap(train.X,train.Y,model)
我一直试图使用pmap()
,但没有成功。
需要一些指导。
答案 0 :(得分:1)
invoke_map
和train.X
合并到列表后, train.Y
应该可以正常工作。这是一个可以测试的类似情况的基本示例。 tib
模仿您的情况,x
和y
是您提供此功能所需的参数。在示例中,我使用runif
函数,该函数采用参数加n
。我使用map2
将x
和y
包含在名为&#34; params&#34;的列表列中。然后我使用invoke_map()
函数迭代地将函数应用于参数。
library(tidyverse)
# Basic example
tib <- tribble(
~fun, ~x, ~y,
runif, -1, 1,
runif, -10, 10,
runif, -3,3
)
tib
#> # A tibble: 3 × 3
#> fun x y
#> <list> <dbl> <dbl>
#> 1 <fun> -1 1
#> 2 <fun> -10 10
#> 3 <fun> -3 3
tib %>%
mutate(params = map2(x, y, list)) %>%
mutate(result = invoke_map(fun, params, n = 5))
#> # A tibble: 3 × 5
#> fun x y params result
#> <list> <dbl> <dbl> <list> <list>
#> 1 <fun> -1 1 <list [2]> <dbl [5]>
#> 2 <fun> -10 10 <list [2]> <dbl [5]>
#> 3 <fun> -3 3 <list [2]> <dbl [5]>
现在我们只需要对您的示例应用相同的过程。这应该有用。
df %>%
mutate(params = map2(train.X, train.Y, list)) %>%
mutate(result = invoke_map(model, params))