如何在 R 中的单个数据帧上迭代应用函数?
How to apply a function iteratively over a single dataframe in R?
我试图将这个操作变成一个函数,我可以在其中设置 n
参数而不使用 for loop
。这个例子是3次。我以为我可以用 purrr::reduce
来做,但它需要一个列表 (?).
tibble::add_row(tibble::add_row(tibble::add_row(df, .before = 1), .before = 1), .before = 1)
reduce(rep(list(add_row), 3), ~.y(.x, .before = 1), .init =df)
x y
1 NA NA
2 NA NA
3 NA NA
4 1 3
5 2 4
怎么样
add_n_rows = function(df, n) {
new.rows = as.data.frame(matrix(NA, nrow=n, ncol=ncol(df)))
colnames(new.rows) <- colnames(df)
df %>% add_row(new.rows, .before = 1)
}
# test
df = data.frame(x = rnorm(10), y = rnorm(10))
add_n_rows(df, 3)
library(tidyverse)
add_row_n <- function(df, n) {
walk(1:n, ~ {df <<- add_row(df, .before = 1)})
df
}
tibble() %>%
add_row_n(3)
#> # A tibble: 3 × 0
tibble(x = 1, y = 2) %>%
add_row_n(3)
#> # A tibble: 4 × 2
#> x y
#> <dbl> <dbl>
#> 1 NA NA
#> 2 NA NA
#> 3 NA NA
#> 4 1 2
由 reprex package (v2.0.1)
于 2021-11-26 创建
我试图将这个操作变成一个函数,我可以在其中设置 n
参数而不使用 for loop
。这个例子是3次。我以为我可以用 purrr::reduce
来做,但它需要一个列表 (?).
tibble::add_row(tibble::add_row(tibble::add_row(df, .before = 1), .before = 1), .before = 1)
reduce(rep(list(add_row), 3), ~.y(.x, .before = 1), .init =df)
x y
1 NA NA
2 NA NA
3 NA NA
4 1 3
5 2 4
怎么样
add_n_rows = function(df, n) {
new.rows = as.data.frame(matrix(NA, nrow=n, ncol=ncol(df)))
colnames(new.rows) <- colnames(df)
df %>% add_row(new.rows, .before = 1)
}
# test
df = data.frame(x = rnorm(10), y = rnorm(10))
add_n_rows(df, 3)
library(tidyverse)
add_row_n <- function(df, n) {
walk(1:n, ~ {df <<- add_row(df, .before = 1)})
df
}
tibble() %>%
add_row_n(3)
#> # A tibble: 3 × 0
tibble(x = 1, y = 2) %>%
add_row_n(3)
#> # A tibble: 4 × 2
#> x y
#> <dbl> <dbl>
#> 1 NA NA
#> 2 NA NA
#> 3 NA NA
#> 4 1 2
由 reprex package (v2.0.1)
于 2021-11-26 创建