gpt4 book ai didi

r - 将变量名传递给函数并在 R 中的循环内输出

转载 作者:行者123 更新时间:2023-12-05 03:15:41 25 4
gpt4 key购买 nike

这个问题似乎有多种变体,但似乎都没有解决循环中以及命名和输出文件的情况。我认为这可能行得通:

for(j in 1:3) {
for(k in 1:17){
extract_[j]km <- extract(RasterStack, SpatialPolygonsDataFrame_[j]km, layer=[k], nl=1, df=TRUE)
}
}

提取函数来自raster包。我已经创建了一系列 RasterStacks 和 SpatialPolygons,我想将它们传递给具有多个参数的函数(“提取”),其中一些我希望通过循环进行操作,并相应地标记输出。这在 BASH 中轻而易举,但我无法在 R 中解决。

最终,我也想传递字符串,但是 another post似乎在那里指明了方向。

编辑:我最初将上述函数作为单个数据框发布,而实际上,它们是栅格包中的指定对象(最终是数据框)。

最佳答案

正如 Justin 指出的那样,使用列表比使用大量命名变量弄乱工作区更符合 R 的结构。当您在工作区中有很多对象要“知道”下一步是什么时,工作很快就会变得很有挑战性。

你的方式:

for(j in 1:3) { 
assign(
paste("extract",j,"km",sep=""), # or paste0 to avoid need for sep=""
function(
get(
paste("data",j,"km",sep="")
)
)
)
}

就个人而言,我更喜欢使用列表,因此在下文中,我将您的数据对象转换为列表,并向您展示如何对该列表的所有元素运行一个函数。以这种方式工作通常会降低以“获取”和“分配”方式使用字符串的需要。

# just converting your variables to a list    
data.list <- mget(grep("data",ls(),value=TRUE),envir=.GlobalEnv)

# then output results
result.list <- lapply(data.list,your_function)

关于r - 将变量名传递给函数并在 R 中的循环内输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com