在 R 列表中,如何设置子列表名称
In R list ,how to set sub list names
如何设置列表名称,代码如下。
目前,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)
其他人在评论中向您展示了如何使用 split()
而不是 group_split()
来获得您想要的内容。这似乎是最简单的解决方案。
但是,如果您坚持使用现有代码,这里有一个替代方案,它保留您当前的代码并添加名称。
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)
names(split_data) <- test_data %>% group_by(category) %>% group_keys() %>% apply(1, paste, collapse = ".")
想法是使用 group_by
以与 group_split
相同的方式拆分,然后将密钥提取为小标题。这将每组一行,但将在不同的列中包含不同的变量,因此我通过粘贴带有点作为分隔符的列来将它们放在一起。管道中的最后一个表达式等效于 apply(keys, 1, f)
其中 f
是 function(row) paste(row, collapse = ".")
。它将 f
应用于 tibble 的每一行,生成一个名称。
即使拆分发生在多个变量上,这也应该有效,并生成与 split()
.
生成的名称相似的名称
如何设置列表名称,代码如下。
目前,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)
其他人在评论中向您展示了如何使用 split()
而不是 group_split()
来获得您想要的内容。这似乎是最简单的解决方案。
但是,如果您坚持使用现有代码,这里有一个替代方案,它保留您当前的代码并添加名称。
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)
names(split_data) <- test_data %>% group_by(category) %>% group_keys() %>% apply(1, paste, collapse = ".")
想法是使用 group_by
以与 group_split
相同的方式拆分,然后将密钥提取为小标题。这将每组一行,但将在不同的列中包含不同的变量,因此我通过粘贴带有点作为分隔符的列来将它们放在一起。管道中的最后一个表达式等效于 apply(keys, 1, f)
其中 f
是 function(row) paste(row, collapse = ".")
。它将 f
应用于 tibble 的每一行,生成一个名称。
即使拆分发生在多个变量上,这也应该有效,并生成与 split()
.