我想在函数内部的.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))