R - Как ввести значение списка в функцию?Нечисловой аргумент бинарного оператора - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь ввести значение из моего списка имен в свою функцию, чтобы я мог выполнить некоторые вычисления с использованием значений из фрейма данных.

library(dplyr)
## My list of names
name_list = list(c("A", "B"), c("C", "D"))

## Some random function to perform calculations
random_function = function(input){
    input/10
}

## The reason you see name_list[[1]][1] is because I wish to do this repeatedly for different list of names. 
data.frame("A"=c(1,1,2,2,3,4), "B"=c(1,3,5,7,9,11)) %>%
    mutate(A2 =  random_function(name_list[[1]][1]))

К сожалению, это не работает ивозвращает ошибку: «не числовой аргумент для двоичного оператора»

Есть ли что-нибудь вокруг этого?

То, что я хочу, по сути:

data.frame("A"=c(1,1,2,2,3,4), "B"=c(1,3,5,7,9,11)) %>%
    mutate(A2 =  random_function(A))

1 Ответ

1 голос
/ 19 июня 2019

Мы можем использовать mutate_all

library(dplyr)
df1 %>% 
       mutate_all(list(`2` = ~ random_function(.)))

Или, если нам нужно сделать это на основе 'name_list', преобразовать в символ и оценить (!!)

df1 %>%
   mutate(A2 = random_function(!! rlang::sym(name_list[[1]][1])))

Или укажите его в mutate_at

df1 %>%
   mutate_at(vars(name_list[[1]][1]), list(A2 = ~ random_function(.)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...