Farrel, no sigo exactamente como 'elemento' no es un tipo R. Tal vez usted tiene un list
de longitud 98 donde cada elemento es un vector de cadena de caracteres?
En ese caso, considere esto:
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>
por lo que hay que vector de la longitud de su lista, que le dice muchas cadenas de cada elemento de la lista tenía. No es el último do.call(rbind, someList)
ya que obtuvimos una lista de lapply
.
Si por el contrario desea contar la longitud de todas las cadenas en cada posición de la lista, reemplazar el simple length(x)
con una nueva función de conteo de los personajes:
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>
si eso no es lo que desea , ¿tal vez podrías simular algunos datos de entrada de ejemplo?
Editar:: En respuesta a sus comentarios, lo que quería es probablemente
R> do.call(rbind, lapply(fl, length))
[,1]
A 2
B 1
C 3
R>
Tenga en cuenta que yo paso en length
, el nombre de una función, y no length()
, la (muestra) cuerpo de una función. Debido a que es fácil mezclarlo, simplemente aplico casi siempre para envolver una función anónima como en mi primera respuesta.
Y sí, esto también se puede hacer con sólo sapply
o incluso algunos de los **ply
funciones:
R> sapply(fl, length)
A B C
2 1 3
R> laply(fl, length)
[1] 2 1 3
R>
La primera manera que lo hizo es lo que quiero. Déjame ir, intenta eso. – Farrel
Yip, funcionó. Fantástico. De hecho, Sapply funcionó aún mejor porque creó un único vector simple que ahora puedo ir y encontrar en un marco de datos preexistente. Ahora puede explicarme cómo lapply (name.of.list, length()) y lapply (name.of.list, function (x) length (x)) son diferentes. – Farrel
Por favor, vea la edición adicional en mi respuesta - en esencia 'length' es diferente de' length() 'y quiere la primera. –