Комментарии, приложенные к ответу @ baptiste, указывают на то, что x
и y
не являются объектами типа "expression"
(один из девяти основных векторных типов, используемых R). Таким образом, они не могут быть объединены с использованием c()
, как они могли бы, если бы они были на самом деле expression
векторов.
Если вы действительно хотите объединить объекты класса "{"
(которые называются «объектами составного языка» в этом разделе определения языка R), вы можете сделать что-то вроде этого:
x <- substitute({a;b;c})
y <- substitute({d;e;f})
class(x)
# [1] "{"
as.call(c(as.symbol("{"), c(as.list(x)[-1], as.list(y)[-1])))
{
a
b
c
d
e
f
}
Тогда, если вы собираетесь делать это часто, вы можете создать функцию, которая объединяет произвольный набор объектов класса "{"
:
myC <- function(...) {
ll <- list(...)
ll <- lapply(ll, function(X) as.list(X)[-1])
ll <- do.call("c", ll)
as.call(c(as.symbol("{"), ll))
}
# Try it out
myC(x, y, y, y, x)