Поведение списка и удаления не соответствует ожиданиям - PullRequest
0 голосов
/ 19 февраля 2019

Почему unlist не разбивает список на части, которые были первоначально помещены в список?

Предположим, у меня есть следующее:

v <- zoo(data.frame(a=c(1,2,3), b=c("a","b","c")))

Глядя на v Я получаю:

> v
  a b
1 1 a
2 2 b
3 3 c

> str(v)
‘zoo’ series from 1 to 3
  Data: chr [1:3, 1:2] "1" "2" "3" "a" "b" "c"
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:2] "a" "b"
  Index:  int [1:3] 1 2 3

(1) Теперь я пытаюсь вставить это в список:

l <- list(one=v, two=v)

Затем я попытался отменить список, и я ожидал двух объектов зоопарка,Но вместо этого я не получаю ничего типа zoo:

> unlist(l)
one1 one2 one3 one4 one5 one6 two1 two2 two3 two4 two5 two6 
 "1"  "2"  "3"  "a"  "b"  "c"  "1"  "2"  "3"  "a"  "b"  "c"

> str(unlist(l))
 Named chr [1:12] "1" "2" "3" "a" "b" "c" "1" "2" "3" "a" "b" "c"
 - attr(*, "names")= chr [1:12] "one1" "one2" "one3" "one4" ...

> typeof(unlist(l))
[1] "character"
> class(unlist(l))
[1] "character"

(2) Чтобы попытаться понять это, я попытался поместить 1 объект зоопарка в список:

l <- list(one=v)

Ожидая получить тот же результат, что и выше, когда я посмотрел на v, но удивительно, я получил:

> unlist(l)
one1 one2 one3 one4 one5 one6 
 "1"  "2"  "3"  "a"  "b"  "c" 

> str(unlist(l))
 Named chr [1:6] "1" "2" "3" "a" "b" "c"
 - attr(*, "names")= chr [1:6] "one1" "one2" "one3" "one4" ...

> typeof(unlist(l))
[1] "character"
> class(unlist(l))
[1] "character"

Возможно, некоторая тонкость R я не вижу, но я не вижупонять, как мне не удается вернуть мои исходные объекты зоопарка из списка (особенно в случае списка из 1 элемента) ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...