如何将DataFrame的列拆分为独立列表(R语言实现)
将DataFrame按列拆分为独立列表(以iris数据集为例)
以下是几种满足需求的实现方式,分别使用base R工具和purrr包:
方法1:base R as.list()(最简方案)
直接将DataFrame转换为列表,默认就是按列拆分,结果完全匹配你的手动实现:
as.list(iris)
验证一致性:
desired <- list( iris$Sepal.Length, iris$Sepal.Width, iris$Petal.Length, iris$Petal.Width, iris$Species ) identical(as.list(iris), desired) # 返回 TRUE
方法2:base R split()
如果一定要用split(),可以通过列索引指定拆分规则:
# 按列索引拆分 split(iris, col(iris))
原理:col(iris)生成对应每列的索引标记,split()会根据该标记将每列单独提取为列表元素。
方法3:purrr map()
使用purrr包的map()遍历DataFrame的列,保留每列的原始数据:
library(purrr) # 直接遍历数据框列,返回自身 map(iris, identity) # 或者通过列名索引遍历 map(names(iris), ~ iris[[.]])
两种写法的结果一致,都能得到由各列组成的列表。
内容的提问来源于stack exchange,提问作者alejandro_hagan
相关产品推荐
相关产品推荐

