【发布时间】:2022-01-13 08:54:22
【问题描述】:
如何设置列表名称,代码如下。
目前split_data包含两个子列表[[1]]和[[2]],如何分别给它们命名?
我想为[[1]] 设置名称'A',为[[2]] 设置名称'B',所以可以使用split_data['A'] 检索数据...
任何人都可以帮助解决这个问题,谢谢?
例如ma <- list(a=c('a1','a2'),b=c('b1','b2')) 可以使用ma["a"] 作为子列表
library(tidyverse)
test_data <- data.frame(category=c('A','B','A','B','A','B','A','B'),
sales=c(1,2,4,5,8,1,4,6))
split_data <- test_data %>% group_split(category)
【问题讨论】:
-
根据
group_split()tidyverse 开发人员的文档故意不希望列表元素被命名(它们有时会很烦人......)所以你可以使用基本函数split(),在您的案例test_data %>% split(test_data[['category']])返回一个命名列表。 -
@qdread - 或者使用更简洁的公式界面
test_data %>% split(~ category)。 -
@Ritchie Sacramento test_data %>% split(~ category) 似乎无法正常工作,它显示“unique.default(x, nmax = nmax) 中的错误:unique() 仅适用于向量”
-
@anderwyang - 抱歉,应该提到这是一个相对较新的功能(自 R 4.1.0 起),所以如果您看到该错误,那么您需要更新 R。