我希望在函数内部传递.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
任何指针都将不胜感激,谢谢!
答案 0 :(得分:2)
您可以使用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
注意,在实践中,您可能希望检查与模式匹配的变量实际上是您认为的变量,但这会为您提供所需的粗略工具。
旧版本(第二行功能):
df <- do.call(rbind, lapply(vars, get, envir=.GlobalEnv))