我想通过复制$ git ls-tree refs/heads/master
100644 blob ba1d886a431eeefae6e86ea82e4b32f58e555482 README.md
100644 blob 255991c16bfa8ceda1f910ca8c2c9a76176074cc aws.mdwn
040000 tree 1b65cfb9fab80cb19ca874f24eec18f4a33441ba aws
100644 blob f9c0fa22a6b36daae4a258825fa14ee970c55db9 cloudbuild.yaml
100644 blob 1a1720e89e8f7e5782404d1dcde409f93fa2b3a3 debian.mdwn
040000 tree be830bc70f66503f3723b68293d1c2be171ba491 debian
100644 blob e24269417aa5afaa14b8d77a2af6d484bb132e91 gcp.mdwn
040000 tree c9470904cac2c9b4ecfc2d129a295414d3f91b35 gcp
100644 blob 96a0c8fc32b7ccb9d16a68beb20f471e4b3e2c8f git.mdwn
040000 tree 84249e1a63519cfc1865f241caa03ff2c8276f70 git
100644 blob fe6ec42d23f3a35945f16ebe2f088c937b6a4fe0 gpg.mdwn
100644 blob 22c4923e6233039f7a5280eeeeeeb358765989dc index.mdwn
100644 blob baa1399e4948a8f1456fa80100f08a369ce84439 ldap.mdwn
040000 tree d777c11680977d00b244877e6ee43a548c6d956a ldap
100644 blob b30f876c9c054b304d30d584e3407da0f940419c local.css
$ git cat-file -s refs/heads/master:cloudbuild.yaml
364
次来增长foo
,并使用唯一变量的新变量来区分n
的每个副本。如果foo
为3,我可以通过以下方式进行详细说明:
n
我正在尝试找到一种更简单的方法。理想情况下,我希望将解决方案放在library(tidyverse)
foo <- mtcars %>%
filter(row_number() < 3)
# desired result
bind_rows(
foo %>% mutate(key = "a"),
foo %>% mutate(key = "b"),
foo %>% mutate(key = "c")
)
#> mpg cyl disp hp drat wt qsec vs am gear carb key
#> 1 21 6 160 110 3.9 2.620 16.46 0 1 4 4 a
#> 2 21 6 160 110 3.9 2.875 17.02 0 1 4 4 a
#> 3 21 6 160 110 3.9 2.620 16.46 0 1 4 4 b
#> 4 21 6 160 110 3.9 2.875 17.02 0 1 4 4 b
#> 5 21 6 160 110 3.9 2.620 16.46 0 1 4 4 c
#> 6 21 6 160 110 3.9 2.875 17.02 0 1 4 4 c
与foo
一起传递到的一行中。
我(失败)%>%
尝试:
purrr
答案 0 :(得分:3)
我们可以使用
library(tidyverse)
set_names(replicate(3, foo, simplify = FALSE), letters[1:3]) %>%
bind_rows(.id = 'key')
或使用uncount
uncount(foo, 3) %>%
mutate(key = rep(letters[1:3], each = 2))
或与unnest
foo %>%
mutate(key = list(letters[1:3])) %>%
unnest
# mpg cyl disp hp drat wt qsec vs am gear carb key
#1 21 6 160 110 3.9 2.620 16.46 0 1 4 4 a
#2 21 6 160 110 3.9 2.620 16.46 0 1 4 4 b
#3 21 6 160 110 3.9 2.620 16.46 0 1 4 4 c
#4 21 6 160 110 3.9 2.875 17.02 0 1 4 4 a
#5 21 6 160 110 3.9 2.875 17.02 0 1 4 4 b
#6 21 6 160 110 3.9 2.875 17.02 0 1 4 4 c
答案 1 :(得分:3)
在尝试使用purrr
时,做foo %>%
并没有帮助您,因为您不需要foo
作为map_dfr
的第一个参数。相反,您可以执行以下操作:
map_dfr(c("a", "b", "c"), ~ mutate(foo, key = .x))
如果您想继续使用管道,但又不想将foo
作为第一个参数传递,则可以在map_dfr
周围加上{}
,以禁止自动传递参数:>
foo %>%
{ map_dfr(c("a", "b", "c"), function(x) { mutate(., key = x)}) }
(使用不同的magrittr
管道可能会有更优雅的方法,我主要坚持使用%>%
)