我希望将R中的数据框转换为列表结构(虽然技术上数据框本身也是一个列表)。我有一个包含参考化合物及其作用于不同目标机制的数据框。例如,雌激素是一种雌激素受体激动剂。我想将数据框转换为列表,因为我已经厌倦了手动输入类似以下内容:
refchem$chemical_id[refchem$target=="AR" & refchem$mechanism=="Agonist"]
每次我需要访问特定参考化学品列表时,我更愿意按以下方式访问化学品:
refchem$AR$Agonist
我希望你能给出一个通用的答案,虽然我提供了一个简单的例子,但并不是所有目标都有所有机制。
使用循环非常容易实现:
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 ])
}
}
我在想是否有更聪明的方法来实现它。我尝试使用
lapply
进行尝试,但没有取得任何进展。
drop
是逻辑值,您只需设置drop=TRUE
,然后R
就会为您执行。 - Señor O