当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R cbind2 按列或行组合两个对象


R语言 cbind2 位于 methods 包(package)。

说明

组合两个类似矩阵R按列的对象 (cbind2) 或行 (rbind2)。这些是具有默认方法的 (S4) 通用函数。

用法

cbind2(x, y, ...)
rbind2(x, y, ...)

参数

x

任何R对象,通常是类似矩阵的。

y

任何R对象,通常类似于x,或完全缺失。

...

方法的可选参数。

细节

cbind2 ( rbind2 ) 的主要用途是当满足这两个要求时由 cbind() ( rbind() ) 递归调用:

  • 至少有一个参数是 S4 对象,并且

  • S3 调度失败(请参阅 cbind 下的调度部分)。

cbind2rbind2 上的方法有效地定义了组合异构参数集时的类型提升策略。在同类情况下,所有对象都派生自某个 S4 类,可以通过外部定义的 S4 cbind ( rbind ) 泛型通过 ... 参数上的 S4 分派来处理。

由于(由于遗留原因)首先尝试 S3 调度,因此通常最好在 S4 类的 cbind ( rbind ) 上另外定义一个 S3 方法。当参数包含 S4 类的对象以及不存在 S3 方法的类的参数时,将调用 S3 方法。此外,如果有一个参数选择不同的 S3 方法(例如 data.frame 的方法),则该 S3 方法会在调度中引入歧义,从而触发递归回退到 cbind2 (rbind2 )。否则,将调用另一个 S3 方法,这可能不合适。

组合 xy 的列(或行)的矩阵(或类似矩阵的对象)。请注意,方法必须从 xy 的相应列名和行名构造 colnamesrownames (但不能从解析参数名称,例如 cbind(..., deparse.level = d) 中的 )。

方法

signature(x = "ANY", y = "ANY")

默认方法使用R的内部代码。

signature(x = "ANY", y = "missing")

一个参数的默认方法使用R的内部代码。

例子

cbind2(1:3, 4)
m <- matrix(3:8, 2,3, dimnames=list(c("a","b"), LETTERS[1:3]))
cbind2(1:2, m) # keeps dimnames from m

## rbind() and cbind() now make use of rbind2()/cbind2() methods
setClass("Num", contains="numeric")
setMethod("cbind2", c("Num", "missing"),
          function(x,y, ...) { cat("Num-miss--meth\n"); as.matrix(x)})
setMethod("cbind2", c("Num","ANY"), function(x,y, ...) {
    cat("Num-A.--method\n") ; cbind(getDataPart(x), y, ...) })
setMethod("cbind2", c("ANY","Num"), function(x,y, ...) {
    cat("A.-Num--method\n") ; cbind(x, getDataPart(y), ...) })

a <- new("Num", 1:3)
trace("cbind2")
cbind(a)
cbind(a, four=4, 7:9)# calling cbind2() twice

cbind(m,a, ch=c("D","E"), a*3)
cbind(1,a, m) # ok with a warning
untrace("cbind2")

也可以看看

cbindrbind;此外, Matrix 包中的cBindrBind

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Combine two Objects by Columns or Rows。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。