根据名称选择列表元素

fri*_*day 5 r list

我有一个命名的矢量列表,代表源自2个样本的事件,"A"和"B":

l.temp <- list(
SF1_t_A = c(rep(1:10)),
SF2_t_A = c(rep(9:15)),
SF1_t_B = c(rep(8:12)))

l.temp
$SF1_t_A
 [1]  1  2  3  4  5  6  7  8  9 10

$SF2_t_A
[1]  9 10 11 12 13 14 15

$SF1_t_B
[1]  8  9 10 11 12
Run Code Online (Sandbox Code Playgroud)

现在我想只选择列表中的元素来自样本"A"或"B".我可以用循环来做这件事,但当plyr出现时,这种情况无法使用列表.这个和变化是我到目前为止所尝试的:

llply(l.temp , function(l){
    if ((unlist(strsplit(names(l), "_"))[3]) == "A"){ 
                 return(l)}

})
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Error in unlist(strsplit(names(l), "_")) : 
  error in evaluating the argument 'x' in selecting a method for function 'unlist': 
Error in strsplit(names(l), "_") : non-character argument
Run Code Online (Sandbox Code Playgroud)

感谢我帮助我做错了什么.

mds*_*ner 7

您可以在列表的名称中找到该模式,该模式为您提供以下模式的索引:

 grep("_A$", names(l.temp))
Run Code Online (Sandbox Code Playgroud)

然后用它来子集:

 l.temp[grep("_A$", names(l.temp))]
Run Code Online (Sandbox Code Playgroud)

  • 可能是`_A $`(以避免选择样品AA,如果它存在). (2认同)