Как мне подставить строку объекта xts в качестве именованного вектора? - PullRequest
0 голосов
/ 12 февраля 2019

Я не могу понять, как создать поднабор строки из объекта xts и получить результат, который является именованным вектором.Вот пример.Создайте игрушечный объект xts:

x <- c("a","b","c")
z <- as.data.frame(matrix(data = c(1,2,3,4,5,6,7,8,9), nrow = 3))
colnames(z) <- x
z_xts <- xts(z, order.by = as.Date(17897:17899))

Вот этот пример объекта xts, z_xts:

           a b c
2019-01-01 1 4 7
2019-01-02 2 5 8
2019-01-03 3 6 9

Я хотел бы, например, установить подмножества столбцов a и b строки 2 в z_xts:

sub_z <- z_xts[2, ][1, c("a","b”)]

Это дает:

           a b
2019-01-02 2 5

, который является "xts" класса "зоопарк".Но я хочу именованный вектор класса numeric.Я перепробовал все, и самое близкое, что я могу получить, это:

sub_z <- as.numeric(coredata(z_xts[2, ][1, c("a","b")]))

, который дает:

[1] 2 5

, который является классом «числовой», но он потерял имена столбцов.Что я действительно хочу:

a b 
2 5

Как это сделать ??

1 Ответ

0 голосов
/ 12 февраля 2019

Как насчет этого

cols <- c("a", "b")
v <- setNames(as.numeric(z_xts[2, cols]), cols)
v
#a b
#2 5

v называется вектором

str(v)
# Named num [1:2] 2 5
# - attr(*, "names")= chr [1:2] "a" "b"
...