【问题标题】:R ls(pattern=...) programmatically within sapplyR ls(pattern=...) 在 sapply 中以编程方式
【发布时间】:2018-01-17 15:12:21
【问题描述】:

我无法让以下工作。

我创建了 6 个变量 A_NB_N 其中N=1:3。我想使用数字向量和sapply 从命名空间中获取值。在sapplyls(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)

感谢任何帮助!

【问题讨论】:

    标签: r lapply sapply


    【解决方案1】:

    我认为这与sapply函数在自己的环境中运行的事实有关,您可以通过以下方式获取父环境:

    sapply(N, function(i) ls(pattern=paste0("A_", i),envir=parent.env(environment())))
    

    输出:

    [1] "A_1" "A_2"
    

    希望这会有所帮助!

    【讨论】:

    • 啊,有道理。谢谢!
    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多