如何在R语言中将tibble数据框的每行转换为列表?
将tibble数据框的每行转换为列表的几种方法
你可以通过以下几种实用方法把tibble的每行转换成列表:
tidyverse推荐:使用purrr包的
pmap()
这是处理行级操作最直观的方式,直接按行构造列表:library(purrr) row_lists <- pmap(df, list)执行后
row_lists是一个大列表,其中每个元素对应原数据框的一行,比如row_lists[[1]]会返回list(year = 2001, value1 = NA, value2 = 3, value3 = 4)。base R实现:使用
apply()函数
不需要加载额外包,用base R的apply按行转换:row_lists <- apply(df, 1, as.list) # 若不需要自动生成的行名,可去掉名称 row_lists <- unname(row_lists)注意:
apply会把分组tibble的分组属性忽略,结果是按列排列的列表,用unname()可以去除自动添加的行索引名称。在原数据框中新增列表列:结合dplyr的
rowwise()
如果想保留原数据的同时存储每行的列表,可以用dplyr按行处理:library(dplyr) df <- df %>% rowwise() %>% mutate(row_list = list(c_across(everything()))) %>% ungroup()这里
c_across(everything())会抓取当前行的所有列,再用list()打包成列表,最后取消行分组。之后可以通过df$row_list提取所有行的列表集合。
内容的提问来源于stack exchange,提问作者grapeporcupine
相关产品推荐
相关产品推荐

