gpt4 book ai didi

r - 检查对象是否存在于指定路径的多级列表中

转载 作者:行者123 更新时间:2023-12-05 01:23:23 27 4
gpt4 key购买 nike

我有一个多级列表 l,其中包含任意数量的级别和条目。举个简单的例子:

l <- list(a = 1,
b = list(x = 2, y = 3),
c = list(dog = 5, cat = list(fish = 3, mouse = 10))
)

在我的包中,用户传递了一个“地址”,它指定了这个列表中的一个对象。地址作为字符串传递,格式为:

address = "$c$cat$fish"

这不包括列表本身的名称。

我编写了一个函数来检查地址是否“有效”,也就是说我想检查指定地址是否存在对象。函数的主要内容如下:

# this is the call to evaluate, as a string
expr_str <- paste0("address_value <- l", address)

# evaluate the call
eval(str2lang(expr_str))

if(is.null(address_value)){
warning("Address is NULL or not found in list")
}

现在,这可行了(尽管可能有更优雅的方法来实现)。但问题是我在 CMD 检查中得到一个注释,因为 address_value 没有可见的绑定(bind),因为它是在 eval() 中创建的。

我想摆脱笔记,但我不确定如何在不使用 eval() 的情况下检索 address 中存在(或不存在)的任何内容。

谁能帮忙解决这个问题?

最佳答案

您是否考虑过使用 purrr::pluck?我认为它符合您的要求:

l %>% pluck('c', 'cat', 'fish')
[1] 3

关于r - 检查对象是否存在于指定路径的多级列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72445567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com