2017-09-26 4 views
-6

私は次のデータセットを持っています。次の関数を実行すると、1行の結果しか生成されません。私は各木のためにGompを見つける必要があります。データセットに関数を適用する方法は?

Tree  a  b  k 
4382  21,88 9,59 0,0538 
4383  13,93 12,94 0,0811 
4384  19,69 9,78 0,0597 
4385  20,02 8,23 0,0489 
4386  11,07 23,2 0,1276 
4387  18,35 13,29 0,0772 
4388  19,72 17,53 0,0961 
4389  26,3 5,26 0,0278 

DOY = c(1:365) 

Gomp <- data.frame(DF$a * exp (-exp(DF$b-DF$k*DOY))) 
+0

あなたは何を達成しようとしていますか? –

+0

私は各ツリーのGompを見つける必要があります – Mori

+0

なぜUR dfには8レコードしかないのですか? –

答えて

1

私が正しく理解しているかどうかは少なくともわかりません。たぶん、より良い質問がsapplyで

DF <- data.frame(Tree = c(4382, 4383, 4384, 5385, 4386), a = c(21.88, 13.93, 19.69, 20.02, 11.07), b = c(9.59, 12.95, 9.78, 8.23, 23.20), k = c(0.0538, 0.0811, 0.0597, 0.0489, 0.1276)) 
DOY <- c(1:365) 
DF_new <- data.frame(sapply(1:length(DF$Tree), function(x)(DF$a[x]*exp(-exp(DF$b[x]-DF$k[x]*DOY))))) 
colnames(DF_new) <- DF$Tree 

(など、vapply、適用されます。)...答えを改善できることができますようにベクトル、リスト、データフレームとをループ。 1:length(DF$Tree)を指定しないと、インデックスの代わりに値が使用されます。

関連する問題