R での関数型プログラミングに関する基本的な質問があります。
次のようなリストを返す関数があるとします。
myF <- function(x){
return (list(a=11,b=x))
}
範囲またはベクトルを指定して関数を呼び出したときに返されるリストが、'a' に対して常に同じ長さになるのはなぜですか。例:
myF(1:10)
戻り値:
$a
[1] 11
$b
[1] 1 2 3 4 5 6 7 8 9 10
「a」リストのサンプル長が b になるように動作を変更するにはどうすればよいでしょうか。
私は実際に (as.list を使用して) 簡単にリストに変換できない一連の S4 オブジェクトを扱っているので、_apply は私の最初の選択肢ではありません。
洞察や助けをありがとう!
EDIT(さらに説明を追加)必ずしも「a」をパディングして、その長さをbと等しくすることを検討しているわけではありません。ただし、ソリューション as.list(data.frame(a=myA,b=x)) を使用すると、最初に計算された同じ値で 'a' がパディングされます。
myF <- function(x){
myA = ceiling(runif(1, max=100))
return (as.list(data.frame(a=myA
,b=x)))
}
myF(1:5)
$a
[1] 79 79 79 79 79 79 79 79 79 79
$b
[1] 1 2 3 4 5 6 7 8 9 10
なぜそうなるのかはまだわかりません!
ありがとう