2011-11-11 14 views
0

私はエントリのdata.frameを持っています。また、エントリのカウントが関連付けられている各週のdata.frameもあります。そのような週のカウントはdata.frameにはすべてのエントリがあるので、元のリストはそれぞれのスーパーセットです。複数の引数で適用する

私がしたいのは、最初の列がエントリで次のN列がN週間カウントであるdata.frameを持つように組み合わせることです。エントリにそのカウントがない場合。私はそれが今どのように見えるかにそれを抽象化するまで

append_week_counts_to_entries <- function(entries) { 
    entries$week1 <- apply(entries,1,helpfunc,row=row,week=count_week1) 
    entries$week2 <- apply(entries,1,helpfunc,row=row,week=count_week2) 
# ... to all N weeks 
    return(entries) 
} 

helpfunc <- function(entries,row,week) { 
    if(as.character(row[1]) %in% week$id) { 
    return(week[which(as.character(week$id) == as.character(row[1])),2]) 
    } 
    else { 
    return(0) 
    } 
} 

(これは働いていた私はむしろそれをキープよりも仕事ができる方法を学びたい:週は、それは私の最初の試みは、このように見えた と考えられています私が以前に書いた貧弱な方法)

私はこれがRにとって非常に非効率的だと感じています。両方の面での助けが大いに評価されるでしょう。

編集: 例のデータセットは次のようになります。

確か
entries: structure(list(`entries$id` = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10 
)), .Names = "entries$id", row.names = c(NA, -10L), class = "data.frame") 

count_week_i: structure(list(Var1 = structure(1:3, .Label = c("1", "2", "3" 
), class = "factor"), Freq = c(1L, 2L, 4L)), .Names = c("Var1", 
"Freq"), row.names = c(NA, -3L), class = "data.frame") 
+2

は、いくつかの答えを得るために、いくつかのデータをポスト言っています。 – Ramnath

+0

'row'と' count_week1'はどこから来ますか? 'dput'を使って各データフレームの構造を見せてください。 – joran

+0

@ joran行はエントリからの行を意味します。 count_week1は、その週の2つの列を持つdfとしてwsですでに宣言されています(1つの列にはIDがあり、もう1つの列には対応するカウントがあります)。 Ramnath、私はあなたがデータの面で何を探しているのかは不明です。それらはかなり基本的なセットです。すべてのエントリ(名前付きエントリ)とIDの数が多いもの(毎週) – user592419

答えて

0

lapplyと家族の高度利用はやや複雑です。 1時間または2回同様の質問をしなければならなかった...

HTH: Using lapply with changing arguments

Running lagged regressions with lapply and two arguments

は特にexpand.grid

+0

ありがとうございます。 Expand.gridは私が探していたものではないようですが、どのように役立つかがわかります。私は実際にはこれをちょうどうまく動作させることができず、代わりにRから素早く仕事を書いてそれを読んだ。 – user592419

関連する問題