3

次の状況でレプリケーション機能を使用するにはどうすればよいですか。

mydata <- data.frame (var1 = 1:4, replication = c(3, 5, 3, 7))

mydata
  var1 replication
1    1           3
2    2           5
3    3           3
4    4           7

次のような結果が必要です。

1,1,1, 2,2,2,2,2,  3,3,3,  4,4,4,4,4,4,4 

1 は 3 回繰り返され、2 は 5 回繰り返されます。

関数を適用しようとしましたが、何もうまくいきません。

apply (mydata,2,rep )
4

1 に答える 1

4

あなたは正しい方向に進んでいました:repそれは仕事のための機能です。しかし、代わりにこれを試してください:

with(mydata, rep(var1, replication))

applyここで使用している方法はrep、各列で個別に呼び出されています。これは、、、を呼び出しrep(1:4)rep(c(3,5,3,7))結果をに結合するようなものmatrixです。

apply慣れ親しんだ素晴らしい機能ですが、この仕事のためのツールではありません。実際、これを使用した解決策applyはかなり醜いでしょう:

unlist(apply(mydata, 1, function(var1.rep) do.call(rep, unname(as.list(var1.rep)))))

@MatthewLundbergはapply、コメントでこれを行う適切な方法を示しています。

于 2012-12-17T02:54:07.327 に答える