r - 为什么 R 中的 split() 将矩阵拆分为向量,如何获得矩阵结果?

标签 r matrix split

我想将矩阵分成两部分。我使用了以下代码

x <- matrix(rnorm(15),5,3)
idx <- rbinom(5,1,0.5)
split(x,idx)

但是,我得到了两个向量而不是两个矩阵。我知道我是否转换 x到 data.frame 会得到我想要的。 IE。
x <- as.data.frame(matrix(rnorm(15),5,3))
idx <- rbinom(5,1,0.5)
split(x,idx)

我想知道有什么方法可以不将矩阵转换为数据帧并导致仍然是矩阵格式?为什么会这样?

最佳答案

split.data.frame(x,idx)也许?这将强制 split手术治疗您的matrixdata.frame , 而不是作为 vector尺寸(它基本上描述了 matrix )。

显示它的示例给出了基本相同的结果,但带有 matrix而不是 data.frame回来:

set.seed(1)
x <- matrix(rnorm(15),5,3)
idx <- rbinom(5,1,0.5)
split.data.frame(x,idx)
#$`0`
#           [,1]       [,2]       [,3]
#[1,] -0.6264538 -0.8204684  1.5117812
#[2,] -0.8356286  0.7383247 -0.6212406
#[3,]  1.5952808  0.5757814 -2.2146999
#
#$`1`
#          [,1]       [,2]      [,3]
#[1,] 0.1836433  0.4874291 0.3898432
#[2,] 0.3295078 -0.3053884 1.1249309

split(data.frame(x),idx)
#$`0`
#          X1         X2         X3
#1 -0.6264538 -0.8204684  1.5117812
#3 -0.8356286  0.7383247 -0.6212406
#4  1.5952808  0.5757814 -2.2146999
#
#$`1`
#         X1         X2        X3
#2 0.1836433  0.4874291 0.3898432
#5 0.3295078 -0.3053884 1.1249309

关于r - 为什么 R 中的 split() 将矩阵拆分为向量,如何获得矩阵结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335816/

相关文章:

r - 丢掉前n行

r - 为什么 mutate 不接受 data.frame 作为要嵌套的列?

c - C 中的 OpenCL : can't free gpu memory

Javascript 按空格分隔,但不在 html 标签内

ruby - 为什么 split (' ' ) 试图变得(太)聪明?

r - 在 R 中拆分包含多个分隔符的字符串

r - 访问LME图中的异常值ID

r - 如何标记对角矩阵中的行和列?

java - 如何将方阵分解为方阵子矩阵?

csv - Groovy 拆分 CSV