удалить нулевой вектор в списке векторов [дубликат]

Вы можете использовать RuleBasedNumberFormat. например, результат даст вам Девяносто

  ULocale locale = новый ULocale (Locale.US);  // us english Double d = Double.parseDouble (90);  NumberFormat formatter = new RuleBasedNumberFormat (locale, RuleBasedNumberFormat.SPELLOUT);  Строковый результат = formatter.format (d);   

Он поддерживает широкий диапазон языков.

21
задан qed 3 June 2013 в 14:16
поделиться

4 ответа

Вот еще один вариант:

Filter(Negate(is.null), x)
30
ответ дан Matthew Plourde 15 August 2018 в 23:53
поделиться
x[!sapply(x,is.null)]

Это обобщает на любое логическое утверждение о списке, просто суб в логике для «is.null».

2
ответ дан ColinTea 15 August 2018 в 23:53
поделиться

Как насчет:

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

Вот краткое описание того, что происходит.

  1. lapply сообщает нам, какие элементы являются NULL
    R> lapply(x, is.null)
    $a
    [1] FALSE
    
    $b
    [1] FALSE
    
    $c
    [1] TRUE
    
  2. Далее мы преобразуем список в вектор:
    R> unlist(lapply(x, is.null)) 
    a     b     c 
    FALSE FALSE  TRUE 
    
  3. Затем мы переключим TRUE на FALSE:
    R> !unlist(lapply(x, is.null))
        a     b     c 
    TRUE  TRUE FALSE 
    
  4. Наконец, мы выбираем элементы, используя обычные обозначения:
    x[!unlist(lapply(x, is.null))]
    
11
ответ дан Jilber Urbina 15 August 2018 в 23:53
поделиться
  • 1
    Разве x[!sapply(x, is.null)] не будет быстрее? – Julius Vainora 3 June 2013 в 13:31

Проще и, скорее всего, быстрее, чем указано выше, для списков любых нерекурсивных (в смысле is.recursive) значений:

example_1_LST <- list(NULL, a=1.0, b=Matrix::Matrix(), c=NULL, d=4L)
example_2_LST <- as.list(unlist(example_1_LST, recursive=FALSE))

str(example_2_LST) печатает:

List of 3
 $ a: num 1
 $ b:Formal class 'lsyMatrix' [package "Matrix"] with 5 slots
  .. ..@ x       : logi NA
  .. ..@ Dim     : int [1:2] 1 1
  .. ..@ Dimnames:List of 2
  .. .. ..$ : NULL
  .. .. ..$ : NULL
  .. ..@ uplo    : chr "U"
  .. ..@ factors : list()
 $ d: int 4
0
ответ дан Rich Scriven 15 August 2018 в 23:53
поделиться
  • 1
    Вам не нужно ссылаться на функции в базе и utils с base:: и utils::. – Rich Scriven 12 December 2015 в 22:19
Другие вопросы по тегам:

Похожие вопросы: