как вставить метки в вектор

У меня есть числовая структура из ColMeans (), как это:

1          2          3          4          5          6          7          8          9         10         11         12         13         14         15         16         17         18         19 
0.01293814 0.96154639 0.99824742 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 
20         21         22         23         24         25         26         27         28         29         30         31         32         33         34         35         36         37         38 
1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 
39         40         41         42         43         44         45         46         47         48         49         50         51         52         53 
1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000

Я пытаюсь сплющить эту структуру, чтобы что-то вроде:

1 0.01293814 2 0.96154639 3 0.99824742 4 1.00000000
Метки

2 ответа

  1. Мы можем использовать paste

    v2 <- paste(names(v1), v1, collapse=" ")
    v2 
    #[1] "1 0.01293814 2 0.96154639 3 0.99824742"
    

    Если нам нужны vectorценности

    scan(text=v2, what=numeric(), quiet=TRUE)
    #[1] 1.00000000 0.01293814 2.00000000 0.96154639 3.00000000 0.99824742
    

    или мы можемrbind, как показано в другом посте и просто сделать c

    c(rbind(names(v1), v1))
    #[1] "1"          "0.01293814" "2"          "0.96154639" "3"          "0.99824742"
    

    данные

    v1 <- setNames(c(0.01293814, 0.96154639, 0.99824742), 1:3)
    
  2. Это мой тестовый вектор:

    > 1:3 -> foo
    > 6:4 -> names(foo)
    > foo
    6 5 4 
    1 2 3 
    

    Сначала можно использовать rbindимена и значения:

    > rbind(as.numeric(names(foo)), as.numeric(foo)) -> bar
    > bar
         [,1] [,2] [,3]
    [1,]    6    5    4
    [2,]    1    2    3
    

    Теперь превратите матрицу обратно в вектор, удалив второе измерение:

    > as.vector(bar) -> bar
    > bar
    [1] 6 1 5 2 4 3
    

    Вы, конечно, можете поместить некоторые из этих шагов в то же выражение, я сделал это шаг за шагом, чтобы сделать очевидным, что происходит.

    Насколько мне известно, rbindпоследующее выравнивание его обратно к вектору является чем-то вроде идиомы R для «молнии»? Кто-то с более глубоким знанием R, вероятно, поправит меня на этом.