1

关于使用运算符在 R 中对命名列表进行子集化,我有几个问题[]

例如,考虑列表formals <- list(x = DOUBLE, y = DOUBLE, z = NULL)。在本例中,DOUBLE被视为 R 中的符号。

1)我应该如何检索所有不等于的元素NULL。我试过formals[formals != NULL]了,但这只会返回一个list没有成员的类型的对象。

2)我应该如何检索名称满足条件的元素。例如,如何获取名称不是的所有元素z?我可以使用names(formals),但这很麻烦,我希望使用[].

4

2 回答 2

2

第一个问题的另一种选择:

Filter(Negate(is.null), formals)

对于第二种情况,您必须使用names. 这是一种方法:

formals[names(formals) != 'z']

formals实际上是R中的一个函数。在命名变量时最好避免使用函数名称。

于 2013-06-11T15:52:41.413 回答
1

这将适用于您的第一个问题:

formals[!unlist(lapply(formals, is.null))]

我认为你不能避免使用names第二个问题。

于 2013-06-11T15:51:36.340 回答