R---------split()` 函数
好的 👍 我来给你详细介绍 split()
函数(尤其是 split(x, f)
的形式,也就是你用到的情况)。
📌 split()
函数简介
split()
的作用:
👉 按照某个分组因子(factor/向量),把一个向量、数据框或列表拆分成 子集,结果返回一个 list。
📌 基本语法
split(x, f, drop = FALSE, ...)
- x :要拆分的对象,可以是向量、数据框、列表。
- f :分组因子(factor)、向量或列表,决定如何分组。
- drop :是否去掉未用到的因子水平,默认为
FALSE
。 - 返回值 :一个
list
,每个元素是x
的子集。
📌 示例
1. 向量分组
x <- 1:10
g <- rep(c("A", "B"), each = 5)split(x, g)
结果:
$A
[1] 1 2 3 4 5$B
[1] 6 7 8 9 10
2. 数据框分组
df <- data.frame(group = c("A", "A", "B", "B", "C"),value = 1:5
)split(df, df$group)
结果:按 group
拆分成 3 个小数据框。
$Agroup value
1 A 1
2 A 2$Bgroup value
3 B 3
4 B 4$Cgroup value
5 C 5
3. 只拆分某一列
比如你只想要 value
,按 group
拆分:
split(df$value, df$group)
结果:
$A
[1] 1 2$B
[1] 3 4$C
[1] 5
📌 结合你的情况
你有 marker
表格,想得到 每个 celltype 的 gene 列表:
marker_list <- split(marker$gene, marker$celltype)
就能得到一个 list,名字是 celltype
,每个元素是 gene
向量。
要不要我帮你画一个图解(示意图)来直观说明 split()
是如何把数据切成 list 的?