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

将要

我有一个多级列表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 检查中得到了一个 NOTE 因为address_value它没有可见的绑定,因为它是在eval().

我想摆脱笔记,但我不确定如何在address不使用eval().

任何人都可以帮助解决这个问题吗?

艾伦·卡梅伦

to 的赋值address_value可以在之外eval这样可以避免 CMD 检查中未声明的变量 nag。

check_address <- function(address) {
  
  expr_str <- paste0("l", address)
  
  # evaluate the call
  address_value <- eval(str2lang(expr_str))
  
  if(is.null(address_value)){
    warning("Address is NULL or not found in list")
  }
  
  address_value
}

结果是:

check_address("$c$cat$fish")
#> [1] 3

check_address("$c$cat$banana")
#> NULL
#> Warning message:
#> In check_address("$c$cat$banana") : Address is NULL or not found in list

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JAVA NullPointerException:检查对象是否存在于数组中?

如何使用Java检查指定对象是否存在于给定对象列表中

查找列表的对象是否存在于另一个列表中

检查对象是否已存在于集合中-Laravel

检查对象是否存在于属性中

如何使用JSON检查对象是否存在于JSON中

Javascript-检查对象是否存在于对象数组中并更新数量

Typescript:按值检查对象是否存在于数组中

C ++:如何检查具有特定属性的对象是否存在于集合中

如何检查对象是否存在于数组中并在AngularJS中为其提供ng-class

如何使用JS检查对象是否存在于另一个对象中

在SOAP请求中设置对象的值之前,如何检查对象是否存在于数组中?

在添加对象之前,如何检查具有相同ID的对象是否已存在于对象列表中?

如何检查对象属性是否也存在于另一个对象中?

在设置状态React JS之前检查对象数组是否存在于对象数组中的简便方法

如何检查对象是否存在于Angular中的对象数组中

如何检查具有相同ID(或任何其他attribute)的对象是否存在于对象数组中?

PHP-通过对needle的所有属性进行比较来检查对象是否存在于对象数组中

libGDX TiledMap:检查对象是否存在于特定单元格

推入之前检查对象是否存在于数组中

检查对象值数组是否存在于另一个数组中,但长度不同

检查对象是否存在于另一个模型外键字段中

想要检查对象是否存在于数组中

如何检查对象是否存在于多个数组中

如何使用javascript检查子对象是否存在于对象数组中?

检查对象是否已存在于 manytomany 字段中

如何检查当前数组中的对象是否存在于前一个数组中

检查对象是否存在于数组中

如何反向检查对象是否存在于多对多 django 中?