R ls(pattern=...) 在 sapply 中以编程方式
R ls(pattern=...) programmatically within sapply
我无法使以下内容正常工作。
我创建了 6 个变量 A_N
和 B_N
,其中 N=1:3
。我想使用数字向量和 sapply
从命名空间中获取值。在 sapply
之外,ls(pattern=paste0(...))
似乎有效。但在 sapply
内,它失败了。
rm(list=ls())
A_1 <- letters[1]
A_2 <- letters[1]
A_3 <- letters[1]
B_1 <- letters[1]
B_2 <- letters[1]
B_3 <- letters[1]
ls()
# [1] "A_1" "A_2" "A_3" "B_1" "B_2" "B_3"
N <- c(1, 2)
ls(pattern=paste0("A_", 1))
# [1] "A_1"
sapply(N, function(i) ls(pattern=paste0("A_", i)))
# [[1]]
# character(0)
# [[2]]
# character(0)
感谢任何帮助!
我觉得这跟sapply函数运行在自己的环境下有关,可以通过如下方式获取父环境:
sapply(N, function(i) ls(pattern=paste0("A_", i),envir=parent.env(environment())))
输出:
[1] "A_1" "A_2"
希望对您有所帮助!
我无法使以下内容正常工作。
我创建了 6 个变量 A_N
和 B_N
,其中 N=1:3
。我想使用数字向量和 sapply
从命名空间中获取值。在 sapply
之外,ls(pattern=paste0(...))
似乎有效。但在 sapply
内,它失败了。
rm(list=ls())
A_1 <- letters[1]
A_2 <- letters[1]
A_3 <- letters[1]
B_1 <- letters[1]
B_2 <- letters[1]
B_3 <- letters[1]
ls()
# [1] "A_1" "A_2" "A_3" "B_1" "B_2" "B_3"
N <- c(1, 2)
ls(pattern=paste0("A_", 1))
# [1] "A_1"
sapply(N, function(i) ls(pattern=paste0("A_", i)))
# [[1]]
# character(0)
# [[2]]
# character(0)
感谢任何帮助!
我觉得这跟sapply函数运行在自己的环境下有关,可以通过如下方式获取父环境:
sapply(N, function(i) ls(pattern=paste0("A_", i),envir=parent.env(environment())))
输出:
[1] "A_1" "A_2"
希望对您有所帮助!