Rでリスト処理 の変更点 - アールメカブ

アールメカブ


Rでリスト処理 の変更点


[[Rの備忘録]]

R であるリストから特定の要素だけを抽出し,抽出したベクトルをまとめて別のリストにまとめようという処理を次のように書いたが,ループなど使わない,もっと賢い方法がありそうな気がする.

 kekka2 <- list()
 j <- 1
 for(i in 1:length(kekka)){
  if(kekka[[i]][2] == "名詞"){
    kekka2[[j]] <- kekka[[i]]
    j <- j+1
 # kekka2 <- c(kekka2, kekka[[i]])#これはダメ
 # kekka2 <- list(kekka2, kekka[[i]])#ましてダメ
   }
 }


こんなことしてみたけど,条件が偽となる元リストの要素がNULLとして返されてしまう.これを同時に削るのは無理かな?とりあえず NA を返して,最後に一行追加して,NA の行を取り去るという処理もできるけど.

 kekka2 <- rapply( kekka[1:length(kekka)], 
                 function(x) if(x[2] == "名詞") x ,
                 else NA, how = "list")
 kekka2[!is.na(kekka2)]

リストから単純に NA の要素([[i]])を取り除くなら以下で可能.

 Q1A2.jp2 <- Q1A2.jp[!is.na(Q1A2.jp)]