如何在R中划分一组值(向量)

Dan*_*age 5 r vector set data-partitioning

我在用R.编程.我有一个包含,比如1000个值的向量.现在让我们说我想将这1000个值随机分成两个新的集合,一个包含400个值,另一个包含600个.我怎么能这样做?我想过做这样的事......

firstset <- sample(mydata, size=400)
Run Code Online (Sandbox Code Playgroud)

...但是这不会对数据进行分区(换句话说,我仍然不知道要在另一组中放入哪600个值).我还想过从1到400的循环,一次随机删除1个值并将其放入firstset.这会正确地划分数据,但是如何实现这一点对我来说并不清楚.另外,我被告知尽可能避免forR中的循环.

有任何想法吗?

Jos*_*ich 9

您可以对其位置进行采样,而不是对值进行采样.

positions <- sample(length(mydata), size=400)  # ucfagls' suggestion
firstset <- mydata[positions]
secondset <- mydata[-positions]
Run Code Online (Sandbox Code Playgroud)

编辑:ucfagls的建议将更有效(特别是对于较大的向量),因为它避免在R中分配位置向量.


Joh*_*ohn 8

只需随机化mydata并获取前400,然后持续600.

mydata <- sample(mydata)
firstset <- mydata[1:400]
secondset <- mydata[401:1000]
Run Code Online (Sandbox Code Playgroud)