r - 如何在 R 中连接复合语言对象?

标签 r

我试图通过连接较小的表达式来构建 R 中的表达式。例如在 S+ 我可以这样做:

> x = substitute({a;b;c})
> y = substitute({d;e;f})
> c(x,y)
{
    a
    b
    c
    d
    e
    f
}

但如果我在 R 中尝试,我会得到这个:
> c(x,y)
[[1]]
{
    a
    b
    c
}

[[2]]
{
    d
    e
    f
}

我应该以另一种方式这样做吗?

最佳答案

@baptiste 的回答所附评论表明 xy不是 "expression" 类型的对象(R 使用的九种基本向量类型之一)。因此,它们不能通过使用 c() 组合起来。 ,如果他们真的是这样的话,他们可以expression向量。

如果您确实想组合 "{" 类的对象(在 R 语言定义的 this section 中称为“复合语言对象”)您可以执行以下操作:

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)

关于r - 如何在 R 中连接复合语言对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9744729/

相关文章:

r - 我可以让 Shiny 在更新之前等待更长时间的 numericInput 吗?

r - 通过包含级别计算平均值 - 基于整个组扩展窗口

r - 如何汇总几年到几十年的数据并绘制它们?

r - 当比例分开时,将文本添加到晶格中的不同面板?

r - 如何与+inf双重集成?

r - 什么时候使用“with”功能,为什么好呢?

r - 使用直方图作为 R 中的输入

r - 从 CSV 文件创建时间序列

r - 抓取 Twitter 数据 : API Failed (Error 403)

r - 如何在R图中以点为单位指定线宽?