Как использовать обозначение функции ~, используя функции семейства apply в R? - PullRequest
2 голосов
/ 30 января 2020

Есть ли способ использовать «~». Нотация функции с функциями apply / lapply в R?

В качестве очень простого примера я хотел бы применить второе из двух применений, чтобы добавить "_se" к каждому из списка строк:

cols <- c("x1", "x2")
sapply(cols, function(x) paste0(x, "_se")) # works, is long

sapply(cols, ~paste0(., "_se")) # doesn't work, I want to save the typing

Есть ли способ сделать что-то похожее на второе решение? Любые другие заменители людей, как?

1 Ответ

1 голос
/ 30 января 2020

Нам не нужны все oop здесь как paste, paste0 и c. все векторизованы

paste0(cols, "_se")
#[1] "x1_se" "x2_se"

Если мы используем ~, обязательно используйте его с map, так как это работает с функциями обратного хода

library(purrr)
map_chr(cols, ~ paste0(.x, "_se"))
#[1] "x1_se" "x2_se"

Или другой вариант as_mapper

sapply(cols,  as_mapper(~ paste0(.x, "_se")))
#     x1      x2 
#"x1_se" "x2_se" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...