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