考虑这个简单的例子
library(dplyr)
library(purrr)
mydata <- dplyr::data_frame('value' = c(1,2,3))
> mydata
# A tibble: 3 x 1
value
<dbl>
1 1.
2 2.
3 3.
我有一个以dataframe
and anumber
作为参数的函数,我想在每次迭代时修改数据框。
我写了以下内容,但它没有更新数据框:
myfunc <- function(df, numba){
name_var <- paste('year_', quo_name(numba), sep ='')
df <- df %>% mutate(!!name_var := 1)
return(df)
}
seq(2006, 2007, by = 1) %>%
purrr::walk(function(x) {mydata <- myfunc(mydata, x)})
不幸mydata
的是没有正确修改:
seq(2006, 2007, by = 1) %>%
map(function(x) {mydata <- myfunc(mydata, x)})
给出:
[[1]]
# A tibble: 3 x 2
value year_2006
<dbl> <dbl>
1 1. 1.
2 2. 1.
3 3. 1.
[[2]]
# A tibble: 3 x 2
value year_2007
<dbl> <dbl>
1 1. 1.
2 2. 1.
3 3. 1.
而预期的输出应该是
# A tibble: 3 x 3
value year_2006 year_2007
<dbl> <dbl> <dbl>
1 1. 1. 1.
2 2. 1. 1.
3 3. 1. 1.
我在这里想念什么?谢谢!