R中列表的子集

时间:2013-06-11 15:42:24

标签: r list subset

我有一些关于使用[]运算符在R中对命名列表进行子集化的问题:

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

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

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

2 个答案:

答案 0 :(得分:2)

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

Filter(Negate(is.null), formals)

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

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

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

答案 1 :(得分:1)

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

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

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