gpt4 book ai didi

r - 提高 R 中 split() 函数的性能?

转载 作者:行者123 更新时间:2023-12-01 09:56:03 24 4
gpt4 key购买 nike

我有一个非常简单形式的数据框:

    X Y
---
A 1
A 2
B 3
C 1
C 3

我的最终结果应该是这样的列表:

$`A`
[1] 1 2

$`B`
[1] 3

$`C`
[1] 1 3

对于这个操作,我使用了 R 中的 split() 函数:

k <- split(Y, X)

这工作得很好。但是,如果我想将此代码应用于包含 2200 万行的数据框,其中包括 1000 万个 X 组和 387000 个 Y 值,它会变得非常耗时。我尝试使用 RRO 8.0 开放版本来支持 MKL。但是,仍然只使用一个内核。 CPU 有 64 GB 的 RAM,所以这应该不是问题。

关于更智能的计算方法的任何想法?

最佳答案

尝试

 library(data.table)
DT <- as.data.table(df)
DT1 <- DT[, list(Y=list(Y)), by=X]
DT1$Y
#[[1]]
#[1] 1 2

#[[2]]
#[1] 3

#[[3]]
#[1] 1 3

或者使用dplyr

 library(dplyr)
df1 <- df %>%
group_by(X) %>%
do(Y=c(.$Y))

df1$Y
#[[1]]
#[1] 1 2

#[[2]]
#[1] 3

#[[3]]
#[1] 1 3

数据

 df <- structure(list(X = c("A", "A", "B", "C", "C"), Y = c(1L, 2L, 
3L, 1L, 3L)), .Names = c("X", "Y"), class = "data.frame", row.names = c(NA,
-5L))

关于r - 提高 R 中 split() 函数的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297843/

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