Farrel, non seguo esattamente come 'elemento' non è un tipo R. Forse hai uno list
di lunghezza 98 in cui ogni elemento è un vettore di stringa di caratteri?
In questo caso, considerare questo:
R> fl <- list(A=c("un", "deux"), B=c("one"), C=c("eins", "zwei", "drei"))
R> lapply(fl, function(x) length(x))
$A
[1] 2
$B
[1] 1
$C
[1] 3
R> do.call(rbind, lapply(fl, function(x) length(x)))
[,1]
A 2
B 1
C 3
R>
è, come ci si vettore della lunghezza della vostra lista, che ti dice molte stringhe ogni elemento della lista aveva. Non l'ultimo do.call(rbind, someList)
come abbiamo ottenuto una lista dal lapply
.
Se d'altra parte si desidera contare la lunghezza di tutte le stringhe ad ogni posizione di lista, sostituire la semplice length(x)
con una nuova funzione di conteggio dei caratteri:
R> lapply(fl, function(x) { sapply(x, function(y) nchar(y)) })
$A
un deux
2 4
$B
one
3
$C
eins zwei drei
4 4 4
R>
se questo non è che tu vuoi , forse potresti prendere in giro alcuni dati di input di esempio?
Edit:: In risposta ai vostri commenti, quello che si voleva è probabilmente
R> do.call(rbind, lapply(fl, length))
[,1]
A 2
B 1
C 3
R>
noti che mi passa in length
, il nome di una funzione, e non length()
, il (visualizzato) corpo di una funzione. Perché è facile confondersi, semplicemente mi limito ad avvolgere quasi sempre una funzione anonima come nella mia prima risposta.
E sì, questo può essere fatto anche con un solo sapply
o addirittura alcune delle **ply
funzioni:
R> sapply(fl, length)
A B C
2 1 3
R> laply(fl, length)
[1] 2 1 3
R>
Il primo modo l'avete fatto è quello che voglio. Fammi provare. – Farrel
Sì, ha funzionato. Fantastico. In effetti, ha funzionato ancora meglio perché ha creato un semplice vettore singolo che ora posso inserire e archiviare su un dataframe preesistente. Ora puoi spiegarmi come lapply (name.of.list, length()) e lapply (name.of.list, function (x) length (x)) sono differenti. – Farrel
Si prega di vedere la modifica aggiuntiva alla mia risposta - in sostanza 'length' è diverso da' length() 'e si desidera il primo. –