在R中的向量中显示对象的顺序

时间:2018-07-25 22:41:24

标签: r

假设我创建一个简单的向量:

x <- seq(1, 50, by = 5)

然后我可能要显示其内容以查看哪个项目是第七个:

print(x)

[1]  1  6 11 16 21 26 31 36 41 46

是否有一种简单的方法来显示内容,以便对每个项目进行编号?

[1] 1, [2] 6, [3] 11, etc.

3 个答案:

答案 0 :(得分:1)

一个简单的选择是将计数器与原始矢量旁边的列绑定:

cbind(1:length(x), x)

答案 1 :(得分:1)

我假设您正在询问如何修改print以包括向量x的每个元素的索引。

有可能

x <- seq(1, 50, by = 5)

cat(sapply(seq_along(x), function(i) (sprintf("[%i] %i", i, x[i]))), "\n")
#[1] 1 [2] 6 [3] 11 [4] 16 [5] 21 [6] 26 [7] 31 [8] 36 [9] 41 [10] 46

或者您可以定义一个自定义的my.print函数,该函数很好地将第nmax个条目的行包装为长向量

my.print <- function(x, nmax = 6) {
    os <- 0
    while (length(x) > 0) {
        cat(sapply(seq_along(x[1:min(length(x), 6)]), function(i)
            sprintf("[%i] %i", i + os, x[i])), "\n")
        x <- x[-(1:min(length(x), nmax))]
        os <- os + nmax
}}    

my.print(x)
#[1] 1 [2] 6 [3] 11 [4] 16 [5] 21 [6] 26
#[7] 31 [8] 36 [9] 41 [10] 46

答案 2 :(得分:1)

一种优雅的方法可能是使用?names

x <- seq(1, 50, by = 5)
names(x) <- seq_along(x)
x
 1  2  3  4  5  6  7  8  9 10 
 1  6 11 16 21 26 31 36 41 46