考虑下面一种情形,要根据 "drug" 列中的相同值提取出对应的 "molecules",并将 "molecules" 对应的值按每个 "drug" 分组,可以使用 dplyr包中的 group_by()和 summarize()函数,或者直接使用 split()函数来达到目的

方法一:
library(dplyr)
# 使用 group_by() 和 summarize() 创建每个 drug 对应的 molecules 列表
result <- network %>%
group_by(drug) %>%
summarize(molecules_list = list(molecules))
# 查看结果
head(result)方法二:
# 使用 split() 按照 drug 列分组
result <- split(network$molecules, network$drug)
# 查看结果
head(result)输出结果
$`Rehmanniae Radix Praeparata`
[1] "MOL000359" "MOL000449"
$`Cornus Officinalis Sieb. Et Zucc.`
[1] "MOL000359" "MOL000449" "MOL005531"
$`Poria Cocos(Schw.) Wolf.`
[1] "MOL000273"
...那如果我们不只想要molecules的值,而是要每个drug对应的数据框呢?用着两种方法也能实现
方法一:
# 使用 group_by() 和 group_split() 创建每个 drug 对应的数据框
result_list <- network %>%
group_by(drug) %>%
group_split()
# 为每个数据框命名,使用 drug 列中的药物名称
names(result_list) <- unique(network$drug)
# 查看第一个药物对应的数据框
head(result_list[[1]])方法二:
# 使用 split() 按照 drug 列分组并生成数据框列表
result_list <- split(network, network$drug)
# 为每个数据框命名,使用 drug 列中的药物名称
names(result_list) <- unique(network$drug)
# 查看第一个药物对应的数据框
head(result_list[[1]])输出结果
无论使用哪种方法,result_list 都是一个列表,每个元素是一个数据框,代表一个特定药物的所有记录。
result_list[[1]]:第一个药物的数据框
result_list[[2]]:第二个药物的数据框
以此类推...可以通过药物名直接访问相应的数据框。例如,如果想访问 Rehmanniae Radix Praeparata的数据框:
result_list[["Rehmanniae Radix Praeparata"]]原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。