rbind
не работает, как вы ожидаете, потому что вы пытаетесь привязать фрейм данных к вектору.Поэтому вам нужно либо сделать Perc фреймом данных (или сделать результаты векторными и присоединиться к каждой итерации, используя c()
).Вам также необходимо вернуть результаты после цикла for.
Я также думаю, что инстанцирующие результаты должны происходить внутри вашей функции
Я думаю, что это должно работать (но не запускать его):
Var_Sum_Impact = function(SUM, Variables) {
results = data.frame(col1=numeric(), stringsAsFactors=FALSE)
for (i in 1:9){
Var = cellStats(Variables[[i]], stat='mean')
Su = cellStats(SUM, stat='mean')
Perc = data.frame(col1 = Var/(Su/100), stringsAsFactors = FALSE)
print(Perc)
results = rbind(results, Perc)
}
results # return results
}
## call this after your function, right?
Var_Sum_Impact(EU_HS_45_2041_SUM.r[[1]], EU_HS_45_2041_Var_Medi_Steppic.r)
Я бы тоже посмотрелдля использования lapply над объектом Variables
:
results_l <- lapply(Variables, function(V) {
Var = cellStats(V, stat='mean')
Su = cellStats(SUM, stat='mean')
data.frame(col1 = Var/(Su/100), stringsAsFactors = FALSE)
}) ## produces a list of data frames you can rbind together
results <- do.call(rbind, results_l)