Я пытаюсь передать имена строковых переменных функции вставки, чтобы вставить все строки вместе. Вот мве:
#bind strings to variable names
a <- c("abc", "def", "ghi")
b <- c("jkl", "mno", "pqr")
c <- c("stu", "vwx", "yz1")
paste(eval(letters[1:3]))
# "a" "b" "c"
Однако я хочу, чтобы содержимое трех переменных вставлялось в одну строку.
"abc def ghi jkl mno pqr stu vwx yz1"
Я знаю о квазицитатах, поэтому я попытался
get(letters[1:3])
Но это только дает мне
"abc def ghi"
Я знаю, что эта тема безумно подробно освещена в Интернете, но я безуспешно перепробовал все rlang
глаголы.
mget()
, а неget()
, последнее возвращает только первое. Они будут возвращены в виде списка. Так что, возможно,paste(unlist(mget(letters[1:3])), collapse = " ")
— это то, что вам нужно. Однако ничего из этого не являетсяrlang
. На языке R это может выглядеть примерно так:rlang::eval_tidy(rlang::expr(paste(c(!!!rlang::syms(letters[1:3])), collapse=" ")))
- person MrFlick   schedule 31.08.2020do.call()
. Но здесь вам нужно как-то совместить все ваши ценности. Я не уверен, что вы имели в виду, поскольку то, как вы написали бы это,paste(a,b,c)
не возвращает желаемое значение. вам нужноpaste(c(a,b,c), collapse=" ")
, что можно сделать с помощьюpaste(do.call("c", c(mget(letters[1:3]))), collapse=" ")
. Но вам нужно что-то, чтобы объединить эти векторы, будь тоc()
илиunlist()
. - person MrFlick   schedule 31.08.2020paste(unlist(mget
является самым элегантным. Если вы опубликуете это, я приму это. - person Tea Tree   schedule 31.08.2020