2016-04-04 9 views
1

リストのリスト(qlist)とqlistのリストの長さが異なっています(例 - タグリストを参照)。 question_id、skip creation_date)をdata.frameに渡します。ここで、タグは対応するquestion_idの第2列と1列です。Rのdata.frameへのリストのリストを効率的に

qlist <- list() 

qlist[[1]] <- list(tags = list("r", "parallel-processing"), creation_date = "1459613802", 
question_id = "36375667") 
qlist[[2]] <- list(tags = list("r"), creation_date = "1459613803", question_id = "36375668") 

私は、次のコード

library(plyr) 
df_qst_tags <- ldply(qlist, function(x){ as.data.frame(cbind(tag = unlist(x$tags), question_id = x$question_id)) }, .progress = "win") 

にそうするように管理していると、結果は予想通りである:2番目の列に対応するquestion_idとの最初の列のタグ。

> df_qst_tags 
        tag question_id 
1     r 36375667 
2 parallel-processing 36375667 
3     r 36375668 

残念ながら、私のqlistは非常に大きく、コードが遅すぎます。より効率的な方法でソリューションを書き直すには?

答えて

3

は、あなたが個々のタグのベクトルを取得するためにtagsを非公開によタグを抽出し、その形状

> tags = lapply(qlist, "[[", "tags") 
> lengths(tags) 
[1] 2 1 

を見つけます。今他の要素、例えば、question_idを抽出し、そんなに

data.frame(tag=unlist(tags, use.names=FALSE), 
      question_id = rep(
       vapply(qlist, "[[", character(1), "question_id"), 
       lengths(tags))) 
+0

パーフェクト感謝の線に沿って、タグの形状によってそれぞれを複製します! –

関連する問題