2013-06-11 4 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 второго вопроса.

Смежные вопросы