r-探测全局变量要调用内部功能



我想在函数内部的.Globalenv中传递变量。基本上是加入x数据帧数量的矩阵。

这是一些虚拟代码;

Alpha <- data.frame(lon=124.9167,lat=1.53333)
Alpha_2 <- data.frame(lon=3.13333, lat=42.48333)
Alpha_3 <- data.frame(lon=-91.50667, lat=27.78333)
myfunc <- function(x){
     vars <- ls(.GlobalEnv, pattern=x)
     mat <- as.matrix(rbind(vars[1], vars[2], vars[3]))
     return(mat)
}

打电话给myfunc('Alpha')时,我希望与您运行时返回同样的东西;

as.matrix(rbind(Alpha, Alpha_2, Alpha_3)
        lon      lat
1 124.91670  1.53333
2   3.13333 42.48333
3 -91.50667 27.78333

任何指针都将不胜感激,谢谢!

您可以使用 get用名称检索变量。我们在这里使用lapply进行循环进行此操作,然后使用rbind将它们绑定在一起。

myfunc <- function(x){
  vars <- ls(.GlobalEnv, pattern=x)
  df <- do.call(rbind, mget(vars, .GlobalEnv))  # courtesy @Roland
  return(df)
}
myfunc("Alpha")
#         lon      lat
# 1 124.91670  1.53333
# 2   3.13333 42.48333
# 3 -91.50667 27.78333

注意,实际上,您可能想检查与模式匹配的变量实际上是您认为的变量,但这为您提供了想要的粗糙工具。

旧版本(func第二行):

df <- do.call(rbind, lapply(vars, get, envir=.GlobalEnv))

相关内容

  • 没有找到相关文章

最新更新