Переменная / Заполнитель переменной в синтаксисе R - PullRequest
0 голосов
/ 19 февраля 2020

У меня следующая проблема:

Мне нужен один и тот же синтаксис снова и снова для разных наборов переменных. Все они имеют одинаковое имя «core» (например: variable_1) и разные суффиксы, например:

variable_1_a,   variable_1_b,   variable_1_c,   variable_1_d,   variable_1_e, ...

, поскольку синтаксис большой, и мне нужно запустить его для (пример) переменных _2, _3, _4 , _5, ... и так далее, мне было интересно, существует ли какая-либо форма выражения-заполнителя, которую я мог бы определить с именем "core", с которым я хочу запускать его каждый раз вместо копирования с вставкой всего синтаксиса и замены каждая переменная_1 со следующим именем ядра.

Например, сохранение имени ядра в термине! XY! («!» просто означает, что это что-то нетипичное), и этот термин во всем синтаксисе с присоединенными «_a», «_b», «_ c»

!XY!_a, !XY!_b, !XY!_c, !XY!_d, !XY!_e, ...

Я играл с сохранением имени ядра в элементе с именем XY и вставкой его с окончаниями:

XY <- "variable_1"
paste0(as.character(XY),"_a") 
"variable_1_a"

ИЛИ

as.symbol(paste0(as.character(XY),"_a")) 
variable_1_a

конечно, это выглядит ужасно долго, но я бы согласился, если он также работал, чтобы использовать его как выражение, которое я мог бы использовать как переменную: например, чтобы прочитать или записать его, что приведет к ошибке.

as.symbol(paste0(as.character(XY),"_a")) <- "test"
Error in as.symbol(paste0(as.character(XY),"_a")) <- "test" : 
could not find function "as.symbol<-"

Это сэкономило бы много времени, если есть шанс написать один синтаксис для всех процедур! Большое спасибо за ваши идеи!

1 Ответ

0 голосов
/ 19 февраля 2020

Предположим, у вас есть 5 переменных ("variable_1", "variable_2" et c) и 4 буквы ("_a", "_b" et c).

Мы можем использовать outer как:

n <- 1:5
l <- letters[1:4]

c(outer(n, l, function(x, y) paste("variable", x, y, sep = "_")))
#Or a bit shorter : 
#paste0("variable_", c(outer(n, l, paste, sep = "_")))

#[1] "variable_1_a" "variable_2_a" "variable_3_a" "variable_4_a"
#[5] "variable_5_a" "variable_1_b" "variable_2_b" "variable_3_b"
#[9] "variable_4_b" "variable_5_b" "variable_1_c" "variable_2_c"
#[13] "variable_3_c" "variable_4_c" "variable_5_c" "variable_1_d"
#[17] "variable_2_d" "variable_3_d" "variable_4_d" "variable_5_d"
...