2013-06-11 141 views
1

列出的我對使用[]運營商中的R子集劃分命名列表幾個問題:子集R中

例如,考慮列表formals <- list(x = DOUBLE, y = DOUBLE, z = NULL)。在這個例子中,DOUBLE被視爲R中的一個符號。

1)我應該如何檢索所有不等於NULL的元素。我試過formals[formals != NULL],但這隻返回一個list類型的對象,沒有成員。

2)我應該如何檢索名稱滿足條件的元素。例如,我將如何獲取名稱不是z的所有元素?我可以使用names(formals),但這很麻煩,我希望使用[]來快速解決問題。

回答

2

關於第一個問題的另一種選擇:

Filter(Negate(is.null), formals) 

對於第二種情況,你將不得不使用names。這裏有一種方法:

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

formals實際上是R.它的最好的功能命名變量時避免的函數的名稱。

1

這會爲你的第一個問題的工作:

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

我不認爲你能避免使用names關於第二個問題。