问题
I want to know how to get a specific row from a table in R. For example,
> a <- c(13,13,
14,14,14,14,14,14,
15,15,15,15,15,15,
16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
17,17,17,17,17,17,17,
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
19,19,19,19,19,19,19,19,19,19,19,
20,20,20,20,20,20,20,20,20,
21,21,21,21,21,21,21,21,21,21,21,
22,22,22,22,22,22,22,22,22,
23,23,23,24,25,25,27)
> table(a)
a
13 14 15 16 17 18 19 20 21 22 23 24 25 27
2 6 6 15 7 17 11 9 11 9 3 1 2 1
How do I extract the last row of the table?
回答1:
The function str()
lets you interrogate the structure of an object
str(table(a))
# 'table' int [1:14(1d)] 2 6 6 15 7 17 11 9 11 9 ...
# - attr(*, "dimnames")=List of 1
# ..$ a: chr [1:14] "13" "14" "15" "16" ...
Your table object is similar to a vector (it just has some additional tags/attributes). Crucially, you can access the elements in the usual way:
R> b = table(a)
##To get the numerical values
R> as.vector(b)
[1] 2 6 6 15 7 17 11 9 11 9 3 1 2 1
##To get the names
R> names(b)
[1] "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "27"
Also, we can use standard sub-setting rules
##Get the last element in the named vector
R> b[length(b)]
27
1
R> names(b)[length(b)]
[1] "27"
来源:https://stackoverflow.com/questions/10104400/extract-a-row-from-a-table-object