2016-07-18 1 views
-1

Je suis tout nouveau à R et j'essaie de comprendre comment additionner les lignes de la sortie suivante.Résumé des lignes dans les matrices créées par lapply

u <- c(1,2,3) 
x <- lapply(u, replicate, rbinom(10,1,.5)) 

Quand je fais x est égal à

[[1]] 
     [,1] 
[1,] 0 
[2,] 0 
[3,] 1 
[4,] 1 
[5,] 0 
[6,] 1 
[7,] 1 
[8,] 1 
[9,] 1 
[10,] 0 

[[2]] 
     [,1] [,2] 
[1,] 0 1 
[2,] 0 1 
[3,] 1 0 
[4,] 1 1 
[5,] 1 1 
[6,] 1 1 
[7,] 1 1 
[8,] 1 0 
[9,] 1 0 
[10,] 0 0 

[[3]] 
     [,1] [,2] [,3] 
[1,] 1 0 0 
[2,] 1 1 1 
[3,] 1 0 1 
[4,] 1 0 1 
[5,] 0 0 1 
[6,] 0 0 1 
[7,] 0 1 0 
[8,] 1 1 1 
[9,] 0 1 1 
[10,] 0 1 1 

Lorsque j'utilise le codage

rowSums(x) 

ou

rowSums(x[2]) 

Je reçois cette erreur

Error in rowSums(x) : 'x' must be an array of at least two dimensions 

Comment puis-je additionner les lignes? Aussi, y a-t-il un moyen de briser les tables pour que je puisse faire une analyse individuelle? De préférence d'une manière qui n'est pas manuelle, donc je peux l'utiliser si j'ai plus de 100 tables

+0

Vous cherchez 'lapply (x, rowSums)'? Garder ces objets organisés dans des listes est généralement la méthode préférée dans R. – lmo

Répondre

2

Une boucle sur les éléments individuels de la liste est commodément effectuée en utilisant lapply(). Vous pouvez essayer ceci:

lapply(x, rowSums) 
#[[1]] 
# [1] 0 1 0 1 1 0 1 1 1 0 
# 
#[[2]] 
# [1] 2 1 2 2 1 2 1 1 0 1 
# 
#[[3]] 
# [1] 1 1 2 1 1 0 1 1 1 1 

données:

u <- c(1,2,3) 
set.seed(123) 
x <- lapply(u, replicate, rbinom(10,1,.5))