gpt4 book ai didi

r - 将 lapply 结果转换为 r 中的单个数据帧

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

这个问题在这里已经有了答案:





Combine a list of data frames into one data frame by row

(9 个回答)


2年前关闭。




我正在从 R 中的数据框列表中提取特定的行,并希望将这些行组装到一个新的数据框中。例如,我将使用虹膜数据:

data(iris)
a.iris <- split(iris, iris$Species)
b.iris <- lapply(a.iris, function(x) with(x, x[3,]))

我要回 lapply()排列成与原始数据帧具有相同结构的单个数据帧(例如, names(iris) )。我一直在查看 plyr 包,但找不到正确的代码来完成这项工作。任何帮助将不胜感激!

布赖恩

最佳答案

您可以使用 do.call()rbind()并简化您的 lapply()称呼。

a.iris <- split(iris, iris$Species)
b.iris <- do.call(rbind, lapply(a.iris, `[`, 3, ))
b.iris
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## setosa 4.7 3.2 1.3 0.2 setosa
## versicolor 6.9 3.1 4.9 1.5 versicolor
## virginica 7.1 3.0 5.9 2.1 virginica

> all.equal(names(iris), names(b.iris))
## [1] TRUE

或者当然,您也可以使用 tapply()找到每组的第三行。
iris[tapply(seq_len(nrow(iris)), iris$Species, `[`, 3), ]
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 3 4.7 3.2 1.3 0.2 setosa
# 53 6.9 3.1 4.9 1.5 versicolor
# 103 7.1 3.0 5.9 2.1 virginica

关于r - 将 lapply 结果转换为 r 中的单个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23183299/

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