6

「A」と「B」の2つのサンプルから発生したイベントを表すベクトルの名前付きリストがあります。

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

ここで、サンプル「A」または「B」のいずれかからのリストの要素のみを選択します。ループを使ってそれを行うこともできますが、そのようなものは、plyrが存在するときにlistを使用するという点に反します。これとバリエーションは、私がこれまでに試したことです。

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

})

これは私が得ているエラーです:

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

私が間違っていることについての助けをいただければ幸いです。

4

1 に答える 1

8

リストの名前でパターンを見つけることができます。これにより、次のいずれかのインデックスが得られます。

 grep("_A$", names(l.temp))

そして、それを使用してサブセット化します。

 l.temp[grep("_A$", names(l.temp))]
于 2013-03-26T19:51:00.117 に答える