【问题标题】:Merge Two Arrays in R在 R 中合并两个数组
【发布时间】:2013-08-26 19:09:48
【问题描述】:

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

数组1

        45    46   47    48    49    50
        1.0   1.5  1.3   1.2   0.9   1.1

数组2

        45    46   47    48    49    50
        2.5   5.5  4.5   5.8   1.5   8.4

我想将它们合并成一个如下所示的数据框:

       1.0  2.5
       1.5  5.5
       1.3  4.5
       1.2  5.8
       0.9  1.5
       1.1  8.4

数字 45 到 50 无关紧要。

【问题讨论】:

  • 你能dput你的数组,这样我们就不会猜测你对象的实际结构了吗?
  • 我们回答您的问题了吗?

标签: arrays r merge


【解决方案1】:

您应该能够结合使用?rbind?t,或者只使用?cbind,具体取决于您的数据格式。

例如:

new.array <- t(rbind(array1,array2))

new.array <- cbind(array1,array2)

new.arrray <- data.frame(array1,array2)

如果你有两个向量,cbind 是最好的选择。但是,假设您有两个数据框。即:

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)))

使用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

【讨论】:

    【解决方案2】:
     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)
    

    如果您不想看到任何列名或行名(如您的问题中所述),您应该执行以下操作:

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

    你得到:

     > 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
    

    【讨论】:

    • as.matrix(cbind(...)) 在这里非常多余,不是吗?默认的cbind 方法是创建一个matrixdata.frames 有一个单独的方法,但在这种情况下不会被调用。
    【解决方案3】:

    您可以通过下面给定的代码合并到数组中,并可以显示为所需的格式。

                for (int i = 45; i <=50; i++)
                {
    
                    float[] merge = { array1[i], array2[i] };
    
                }
               // to display in required format
    
                for (int j =0; i <merge.Length; i++)
                {
    
                    Console.WriteLine(merge[i]);
    
                } 
    

    【讨论】:

    • 我相信 OP 正在寻找使用 r 的解决方案。
    • 查看标签R问题是关于R的。
    猜你喜欢
    • 2019-03-29
    • 2020-10-16
    • 2023-03-06
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2010-09-08
    • 2010-12-31
    相关资源
    最近更新 更多