gpt4 book ai didi

r - 将数据框转换为R中的列表列表

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

我想把 data.frame 变成这样:

dat = data.frame (
ConditionA = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
ConditionB = c(1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5),
X = c(460, 382, 468, 618, 421, 518, 655, 656, 621, 552, 750, 725, 337, 328, 342, 549, 569, 523, 469, 429),
Y = c(437, 305, 498, 620, 381, 543, 214, 181, 183, 387, 439, 351, 327, 268, 276, 178, 375, 393, 312, 302)
)

进入这样的(或类似的)列表列表:

lst = list(
list(
c(460, 382, 468, 618),
c(437, 305, 498, 620)
),
list(
c(421, 518, 655, 656, 621),
c(381, 543, 214, 181, 183)
),
list(
c(552, 750, 725),
c(387, 439, 351)
),
list(
c(337, 328, 342, 549),
c(327, 268, 276, 178)
),
list(
c(569, 523, 469, 429),
c(375, 393, 312, 302)
)
)

> lst
[[1]]
[[1]][[1]]
[1] 460 382 468 618

[[1]][[2]]
[1] 437 305 498 620


[[2]]
[[2]][[1]]
[1] 421 518 655 656 621

[[2]][[2]]
[1] 381 543 214 181 183


[[3]]
[[3]][[1]]
[1] 552 750 725

[[3]][[2]]
[1] 387 439 351

. . .

进行这种转换的最有效方法是什么?

最佳答案

我们可以根据第一列和第二列做一个split,使用drop=TRUE去除0个元素的组合并转换成list

lapply(split(dat[-(1:2)], dat[1:2], drop = TRUE), as.list)

或者使用tidyverse

library(tidyverse)
dat %>%
group_by(ConditionA, ConditionA.1) %>%
nest %>%
mutate(data = map(data, as.list)) %>%
pull(data)

关于r - 将数据框转换为R中的列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50787580/

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