在R中合并两个数组

use*_*427 6 arrays merge r

假设我有两个数组,array1和array2,看起来像

数组1

        45    46   47    48    49    50
        1.0   1.5  1.3   1.2   0.9   1.1
Run Code Online (Sandbox Code Playgroud)

数组2

        45    46   47    48    49    50
        2.5   5.5  4.5   5.8   1.5   8.4
Run Code Online (Sandbox Code Playgroud)

我想将它们合并到一个看起来像这样的数据框中:

       1.0  2.5
       1.5  5.5
       1.3  4.5
       1.2  5.8
       0.9  1.5
       1.1  8.4
Run Code Online (Sandbox Code Playgroud)

数字45到50并不重要.

May*_*you 12

 array1 <- c(1.0,1.5,1.3,1.2,0.9,1.1)
 array2 <- c(2.5,5.5,4.5,5.8,1.5,8.4)

 result = cbind(array1, array2)
Run Code Online (Sandbox Code Playgroud)

如果您不希望看到任何列名称或行名称(如问题中所述),则应执行以下操作:

 result = as.matrix(cbind(array1, array2)) 
 dimnames(result) <-list(rep("", dim(result)[1]), rep("", dim(result)[2]))
Run Code Online (Sandbox Code Playgroud)

你得到:

 > result

  1.0 2.5
  1.5 5.5
  1.3 4.5
  1.2 5.8
  0.9 1.5
  1.1 8.4
Run Code Online (Sandbox Code Playgroud)

  • `as.matrix(cbind(...))`这里很冗余,不是吗?默认的`cbind`方法是创建一个`矩阵`.`data.frame`有一个单独的方法,但在这种情况下不会调用它. (2认同)

day*_*yne 1

您应该能够组合?rbind?t,或者仅?cbind根据数据的格式使用。

例如:

new.array <- t(rbind(array1,array2))
Run Code Online (Sandbox Code Playgroud)

或者

new.array <- cbind(array1,array2)
Run Code Online (Sandbox Code Playgroud)

或者

new.arrray <- data.frame(array1,array2)
Run Code Online (Sandbox Code Playgroud)

如果你有两个向量,cbind这是最好的方法。但是,假设您有两个数据框。IE:

array1 <- t(data.frame(array1=c(1.0,1.5,1.3,1.2,0.9,1.1)))
array2 <- t(data.frame(array2=c(2.5,5.5,4.5,5.8,1.5,8.4)))
Run Code Online (Sandbox Code Playgroud)

使用cbind不会给出所需的输出,您将需要组合trbind

> cbind(array1,array2)
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
array1    1  1.5  1.3  1.2  0.9  1.1  2.5  5.5  4.5   5.8   1.5   8.4

> t(rbind(array1,array2))
     array1 array2
[1,]    1.0    2.5
[2,]    1.5    5.5
[3,]    1.3    4.5
[4,]    1.2    5.8
[5,]    0.9    1.5
[6,]    1.1    8.4
Run Code Online (Sandbox Code Playgroud)