2017-09-26 6 views
-6

J'ai l'ensemble de données suivant. Quand j'exécute la fonction suivante, elle ne produit qu'une ligne de résultats. J'ai besoin de trouver le Gomp pour chaque arbre.comment appliquer une fonction sur un ensemble de données?

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

qu'essayez-vous d'atteindre? –

+0

j'ai besoin de trouver le Gomp pour chaque arbre – Mori

+0

pourquoi DOY 1 à 365, quand vous n'avez que 8 fiches? –

Répondre

1

Je suis au moins pas tout à fait sûr si j'ai bien compris. Peut-être une meilleure question pourrait améliorer les réponses ...

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 

Avec sapply (appliquer, vapply, etc.), Vous pouvez boucle à travers des vecteurs, des listes, et ainsi de suite dataframe. Sans 1:length(DF$Tree), les valeurs sont utilisées à la place de l'index.