Удалить пустые элементы списка в R - PullRequest
1 голос
/ 28 мая 2020

Поскольку большинство слов, которые я ищу, возвращают пустой список, я хотел бы оставить только те, которые дают результат.

> assocs<-findAssocs(dtm,names(freq[1:5]),0.5)
> assocs
$cuffie
numeric(0)

$auricolari
    colora  controlli interrotta operazione      verrà 
      0.52       0.52       0.51       0.51       0.50 

$qualità
numeric(0)

$suono
numeric(0)

$ricarica
         colora      interrotta      operazione           verrà     addentrarmi          attira 
           0.57            0.56            0.55            0.54            0.53            0.53 
       attirano        avanzati  consigliarveli      consultato        iniziare   interromperne 
           0.53            0.53            0.53            0.53            0.53            0.53 
    inutilmente        mettersi   negativamente      reinserire       ritornare siribixbygoogle 
           0.53            0.53            0.53            0.53            0.53            0.53 
      specifico         ventina       collocare 
           0.53            0.53            0.52 

Желаемый результат:

> assocs

$auricolari
    colora  controlli interrotta operazione      verrà 
      0.52       0.52       0.51       0.51       0.50 

$ricarica
         colora      interrotta      operazione           verrà     addentrarmi          attira 
           0.57            0.56            0.55            0.54            0.53            0.53 
       attirano        avanzati  consigliarveli      consultato        iniziare   interromperne 
           0.53            0.53            0.53            0.53            0.53            0.53 
    inutilmente        mettersi   negativamente      reinserire       ritornare siribixbygoogle 
           0.53            0.53            0.53            0.53            0.53            0.53 
      specifico         ventina       collocare 
           0.53            0.53            0.52 

By при этом я мог искать по большему количеству слов, не возвращая огромный список.

Библиотека, используемая для findassocs (), - это tm.

Результат:

> class(assocs)
[1] "list"

Я пробовал это:

for (i in 1:5){
  if (length(assocs[[i]])==0){
    new_assocs[j]=assocs[i]
    j=j+1
  }
}

Но результат был такой:

> new_assocs
[[1]]
numeric(0)

[[2]]
numeric(0)

[[3]]
numeric(0)

[[4]]
numeric(0)

[[5]]
numeric(0)

Заранее всем спасибо.

Ответы [ 2 ]

2 голосов
/ 28 мая 2020

Вы можете проверить длину, поскольку numeric(0) не имеет длины

assocs[sapply(assocs, function(x) length(x) >= 1)]
0 голосов
/ 28 мая 2020

Функция lengths() возвращает количество элементов (т. Е. Длину) для каждого элемента в списке. Итак, вы можете сделать это:

assocs[lengths(assocs) > 1]

Это, конечно, в основном тот же ответ, что и Daniel O , но он несколько проще и для больших списков более эффективен .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...