sách gpt4 ai đã đi

使用 dplyr 将列表重新组织为数据框

In lại 作者:行者123 更新时间:2023-12-04 10:39:14 27 4
mua khóa gpt4 Nike

我将使用 dplyr 包的速度在整洁的数据帧中转换结构化列表。
我会知道我现在发布的解决方案是“最先进的”还是更快的解决方案。

这是我的起始列表的示例:

l = list()
l[[1]] = list(member1=c(a=rnorm(1)),member2=matrix(rnorm(3),nrow=3,ncol=1,dimnames=list(c(letters[2:4]),c("sample"))))
l[[2]] = list(member1=c(a=rnorm(1)),member2=matrix(rnorm(3),nrow=3,ncol=1,dimnames=list(c(letters[2:4]),c("sample"))))
l[[3]] = list(member1=c(a=rnorm(1)),member2=matrix(rnorm(3),nrow=3,ncol=1,dimnames=list(c(letters[2:4]),c("sample"))))

有了这个结果(向您展示玩具结构):
l
[[1]]
[[1]]$member1
Một
0.3340196

[[1]]$member2
sample
b 1.0098830
c 0.6413375
d 0.9080675

[[2]]
[[2]]$member1
Một
0.0590878

[[2]]$member2
sample
b 0.5585736
c -0.5936157
d -0.3985687

[[3]]
[[3]]$member1
Một
0.06242458

[[3]]$member2
sample
b -0.2873391
c 0.5326067
d -1.1635551

现在我将使用一个方便的函数来重新排列数据 lapply浏览列表:
organizeSamples = function(x){
member = x$member2
output = data.frame(key=rownames(member),value=member[,1])
return(output)
}
l_new = lapply(l, organizeSamples)

现在 dplyr 发挥了作用:
samples = dplyr::bind_rows(l_new)
samples :

key value
1 b 1.0098830
2 c 0.6413375
3 d 0.9080675
4 b 0.5585736
5 c -0.5936157
6 d -0.3985687
7 b -0.2873391
8 c 0.5326067
9 d -1.1635551

有没有一种方法可以使用 dplyr 更快、更优雅、更紧凑?

1 Câu trả lời

这是另一种具有更多 dplyr/tidyr 功能和管道的方法,但是我还没有针对问题中的原始方法测试其性能,它是否更优雅取决于个人喜好。

library(dplyr); library(tidyr)

lapply(l, `[[`, 2) %>%
data.frame %>%
add_rownames("key") %>%
gather(x, value, -key) %>%
select(-x)

# key value
#1 b -1.1476570
#2 c -0.2894616
#3 d -0.2992151
#4 b 0.2522234
#5 c -0.8919211
#6 d 0.4356833
#7 b -0.2242679
#8 c 0.3773956
#9 d 0.1333364

关于使用 dplyr 将列表重新组织为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265702/

27 4 0
Bài viết được đề xuất: shell - 1>/dev/null 2>&1 & pid1=$!意思?
Bài viết được đề xuất: R 没有工作区但分配了 2+GB 的内存?
Bài viết được đề xuất: r - R中的指标函数
Bài viết được đề xuất: r - 选择单笔订单最高消费金额
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com