Why split() in R split matrix into vector and how can I get the matrix result?
我想将矩阵分成两部分。我使用了以下代码
1 2 3 | x <- matrix(rnorm(15),5,3) idx <- rbinom(5,1,0.5) split(x,idx) |
但是,我得到了两个向量而不是两个矩阵。我知道是否将
1 2 3 | x <- as.data.frame(matrix(rnorm(15),5,3)) idx <- rbinom(5,1,0.5) split(x,idx) |
我想知道是否有没有将矩阵转换为数据帧而结果仍为矩阵格式的方法?以及为什么会这样?
显示示例的结果基本相同,但返回的是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 |
您可以通过行子设置来执行此操作。使用提供的
1 2 | split_x <- list(x_a= x[idx == 1,], x_b= x[idx != 1,]) |