【发布时间】:2020-10-25 21:23:26
【问题描述】:
我想使用 map 将函数应用于 tibble 的每一列。
但是,我不希望简化 tibble 列。
我可以通过使用imap 用一列重新创建小标题来解决这个问题。
但是,我该怎么做呢?
让我们使用一个名为test 的超简单函数来看看它是否有效。
默认行为:列简化为向量:
test<-function(data){
data
}
tibble(v1=1:20,v2=100:119) %>% map(test)
$v1
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
$v2
[1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
这行不通,因为需要引用名称:
tibble(v1=1:20,v2=100:119) %>% imap(~test(tibble(.y=.x))) %>% str
List of 2
$ v1: tibble [20 x 1] (S3: tbl_df/tbl/data.frame)
..$ .y: int [1:20] 1 2 3 4 5 6 7 8 9 10 ...
$ v2: tibble [20 x 1] (S3: tbl_df/tbl/data.frame)
..$ .y: int [1:20] 100 101 102 103 104 105 106 107 108 109 ...
那么为什么这不起作用呢?
tibble(v1=1:20,v2=100:119) %>% imap(~test(tibble(!!!(.y)=.x)))
Error: unexpected '=' in "tibble(v1=1:20,v2=100:119) %>% imap(~test(tibble(!!!(.y)="
【问题讨论】: