gpt4 book ai didi

r - 将数据帧拆分为四个部分

转载 作者:行者123 更新时间:2023-12-04 11:36:36 25 4
gpt4 key购买 nike

我想将一个数据帧分成 4 个相等的部分,因为我想使用我计算机的 4 个内核。

我这样做了:

df2 <- split(df, 1:4)
unsplit(df2, f=1:4)

还有那个

df2 <- split(df, 1:4)
unsplit(df2, f=c('1','2','3','4')

但是 unsplit 功能不起作用,我有这些警告消息

1: In split.default(seq_along(x), f, drop = drop, ...) :
data length is not a multiple of split variable
...

你知道原因吗?

最佳答案

df 中有多少行?如果表中的行数不能被 4 整除,您将收到该警告。我认为您使用的拆分因子 f 不正确,除非您想要将每个后续行放入不同的拆分data.frame。

如果您真的想将数据拆分为 4 个数据帧。一行接着一行然后使用 rep_len 使您的拆分因子与数据框中的行数相同,如下所示:

## Split like this:
split(df , f = rep_len(1:4, nrow(df) ) )
## Unsplit like this:
unsplit( split(df , f = rep_len(1:4, nrow(df) ) ) , f = rep_len(1:4,nrow(df) ) )

希望这个示例说明了错误发生的原因以及如何避免它(即使用适当的拆分因子!)。

## Want to split our data.frame into two halves, but rows not divisible by 2
df <- data.frame( x = runif(5) )
df

## Splitting still works but...
## We get a warning because the split factor 'f' was not recycled as a multiple of it's length
split( df , f = 1:2 )
#$`1`
# x
#1 0.6970968
#3 0.5614762
#5 0.5910995

#$`2`
# x
#2 0.6206521
#4 0.1798006

Warning message:
In split.default(x = seq_len(nrow(x)), f = f, drop = drop, ...) :
data length is not a multiple of split variable


## Instead let's use the same split levels (1:2)...
## but make it equal to the length of the rows in the table:
splt <- rep_len( 1:2 , nrow(df) )
splt
#[1] 1 2 1 2 1


## Split works, and f is not recycled because there are
## the same number of values in 'f' as rows in the table
split( df , f = splt )
#$`1`
# x
#1 0.6970968
#3 0.5614762
#5 0.5910995

#$`2`
# x
#2 0.6206521
#4 0.1798006

## And unsplitting then works as expected and reconstructs our original data.frame
unsplit( split( df , f = splt ) , f = splt )
# x
#1 0.6970968
#2 0.6206521
#3 0.5614762
#4 0.1798006
#5 0.5910995

关于r - 将数据帧拆分为四个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16394268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com