我有一个由TDM创建的数据框。我想找到每个文档的前10个术语(列为rownames)(列为列标题)。如果没有R中的循环,有没有办法做到这一点? 例如,下表我想看到每列的前3个术语以及列中的术语及其值。
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16
will 10 18 19 36 27 53 21 17 15 59 15 21 35 19 30 27
poor 3 11 0 4 0 0 2 2 2 7 2 5 9 3 2 8
country 12 10 4 8 9 1 6 15 8 15 8 10 8 2 15 9
now 1 10 3 5 5 2 4 1 0 9 0 8 5 1 11 3
答案 0 :(得分:3)
您可以使用apply
对每列进行排序,并返回包含该列中前n
个元素的命名向量的列表:
set.seed(1)
x <- replicate(3, rpois(5, 10))
rownames(x) <- letters[1:5]
colnames(x) <- paste0("X", seq_len(ncol(x)))
x
#> X1 X2 X3
#> a 8 12 8
#> b 10 11 2
#> c 7 9 8
#> d 11 14 10
#> e 14 11 7
n <- 3
apply(x, 2, function(x) list(sort(x)[seq_len(n)]))
#> $X1
#> $X1[[1]]
#> c a b
#> 7 8 10
#>
#>
#> $X2
#> $X2[[1]]
#> c b e
#> 9 11 11
#>
#>
#> $X3
#> $X3[[1]]
#> b e a
#> 2 7 8
由reprex package(v0.2.0)创建于2018-03-16。