将数据框转换为列表

day*_*yne 3 r list apply dataframe

我试图从数据框转到R中的列表结构(我知道技术上数据框是一个列表).我有一个包含参考化学品及其机制不同目标的数据框.例如,雌激素是雌激素受体激动剂.我想要的是将数据框转换为列表,因为我厌倦了键入以下内容:

refchem$chemical_id[refchem$target=="AR" & refchem$mechanism=="Agonist"]
Run Code Online (Sandbox Code Playgroud)

每次我需要访问特定参考化学品清单.我更愿意通过以下方式获取化学品:

refchem$AR$Agonist
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个通用答案,即使我已经给出了一个简化的例子,因为并非所有目标都有所有机制.

使用循环很容易实现这一点:

example <- data.frame(target=rep(c("t1","t2","t3"),each=20),
                      mechan=rep(c("m1","m2"),each=10,3),
                      chems=paste0("chem",1:60))
oneoption <- list()
for(target in unique(example$target)){
  oneoption[[target]] <- list()
  for(mech in unique(example$mechan)){
    oneoption[[target]][[mech]] <- as.character(example$chems[ example$target==target & example$mechan==mech ])
  }
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有更聪明的方法来做到这一点.我试过玩lapply,并没有取得任何进展.

Señ*_*r O 6

使用split:

split(refchem, list(refchem$target, refchem$mechanism))
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

新的访问方式是 refchem$AR.Agonist