我想将矩阵分成两部分。我使用了以下代码
x <- matrix(rnorm(15),5,3)
idx <- rbinom(5,1,0.5)
split(x,idx)
然而,我有两个向量而不是两个矩阵。我知道如果我将x
转换为data.frame将得到我想要的。即。
x <- as.data.frame(matrix(rnorm(15),5,3))
idx <- rbinom(5,1,0.5)
split(x,idx)
我想知道是否有任何方法可以将转换矩阵转换为数据帧并且结果仍然是矩阵格式?为什么会这样?
答案 0 :(得分:2)
split.data.frame(x,idx)
?这将强制split
操作将matrix
视为data.frame
,而不是vector
维度(实质上描述matrix
)。< / p>
显示它的示例给出了基本相同的结果,但返回了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
答案 1 :(得分:1)
您可以通过行子集化来完成此操作。使用您提供的idx
和split_x <- list(x_a= x[idx == 1,],
x_b= x[idx != 1,])
:
public class DefaultProcessEngineConfiguration extends AbstractCamundaConfiguration implements CamundaProcessEngineConfiguration {
...
public void apply(SpringProcessEngineConfiguration configuration) {...}
}