1
votes

Obtenir la ligne de la table dimname dans R

J'ai le tableau suivant:

> some.table
          Week
Person     17 18 19 20 21 22 23 24 25 26 27 28 29 30
  Anna      0  1  0  1  1  1  0  0  2  1  1  0  0  2
  Cloe      0  1  1  1  1  1  0  0  0  0  0  1  2  0
  Heather   1  0  0  2  1  1  0  1  1  1  2  1  2  0
  Samantha  0  0  3  1  1  2  1  0  0  0  0  0  0  0
> str(some.table)
 'table' int [1:6, 1:14] 0 0 1 0 0 1 1 1 0 0 ...
 - attr(*, "dimnames")=List of 2
  ..$ Person: chr [1:6] "Anna" "Cloe" "Heather" "Samantha"
  ..$ Week  : chr [1:14] "17" "18" "19" "20" ...

Comment extraire une ligne de ce tableau par le nom d'une personne?

Ex. pour quelque chose comme some.table $ Person ["Cloe"] Je voudrais obtenir un vecteur c (0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 2, 0) .

r

0 commentaires

3 Réponses :


2
votes

Cela devrait fonctionner, notez la virgule:

unname(x[ "4", ])
# [1] 1 8 2

Voici un exemple reproductible:

x <- with(mtcars, table(cyl, gear))
x
#    gear
# cyl  3  4  5
#   4  1  8  2
#   6  2  4  1
#   8 12  0  2

x[ "4", ]
# 3 4 5 
# 1 8 2 

Nous pouvons supprimer les noms de colonnes en utilisant unname:

some.table["Cloe", ]


0 commentaires

2
votes

C'est un objet table , donc soit convertissez en data.frame et faites l'extraction. Les "Person", "Week" sont l'attribut names du dimnames

data(mtcars)
some.table <- table(mtcars$cyl, mtcars$vs)
names(dimnames(some.table)) <- list("mpg", "vs")
subset(as.data.frame(some.table), mpg == 4)$Freq
#[1]  1 10

En utilisant un exemple reproductible avec mtcars

subset(as.data.frame(some.table), Person == "Cloe")$Freq


0 commentaires

2
votes

Essayez some.table ["Cloe",]


0 commentaires