为什么rbind不能在R中的函数循环中工作

为什么rbind不能在R中的函数循环中工作,r,function,for-loop,rbind,R,Function,For Loop,Rbind,我正在计算多个光栅中的影响百分比。我有一个光栅和一个完整的变量(总和)。然后我有9个光栅,我想循环并计算影响的百分比(变量)。我使用该函数是因为我将使用不同的输入。当函数停止时,我希望有一个文本文件或任何可以导出的文件。我尝试使用rbind(),但它不起作用。当函数执行时,它总是空的。代码如下: Var_Sum_Impact(EU_HS_45_2041_SUM.r[[1]], EU_HS_45_2041_Var_Medi_Steppic.r) results = data.frame(col1

我正在计算多个光栅中的影响百分比。我有一个光栅和一个完整的变量(总和)。然后我有9个光栅,我想循环并计算影响的百分比(变量)。我使用该函数是因为我将使用不同的输入。当函数停止时,我希望有一个文本文件或任何可以导出的文件。我尝试使用rbind(),但它不起作用。当函数执行时,它总是空的。代码如下:

Var_Sum_Impact(EU_HS_45_2041_SUM.r[[1]], EU_HS_45_2041_Var_Medi_Steppic.r)

results = data.frame(col1=numeric(), stringsAsFactors=FALSE)

Var_Sum_Impact = function(SUM, Variables) {
  for (i in 1:9){
    Var = cellStats(Variables[[i]], stat='mean')
    Su = cellStats(SUM, stat='mean')
    Perc = Var/(Su/100)
    print(Perc)
    results = rbind(results, Perc)
    }
}
这是我从打印中得到的结果,但是“结果”是空的(0 obs.)。计算是正确的:

[1] 9.418741
[1] 20.39071
[1] 12.96036
[1] 5.910591
[1] 4.998413
[1] 21.37485
[1] 6.379199
[1] 4.383655
[1] 14.18348

rbind
无法按预期工作,因为您正在尝试将数据帧绑定到向量。因此,您需要将Perc设置为数据帧(或者将结果设置为向量,并使用
c()
)加入每个迭代)。您还需要在for循环之后返回结果

我还认为实例化结果应该发生在函数内部

我认为这应该是可行的(但还没有运行):

我还将研究在
变量上使用lappy:

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)

results\u l try
results$col1[i]谢谢你,文森特。我在我得到的函数中也添加了return(似乎正确,但在我编写视图(results)时结果仍然为空):col1 9.4187412 20.390715 3 12.960364 4 5.910591 5 4.998413 6 21.374847 7 6.379199 8 4.383655 9 14.183477
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)