2013-07-10 2 views
1

Я работаю с выходными данными из геосферы :: gcIntermediate, которая генерирует путевые точки Great Circle. Вывод - это список. Затем я устанавливаю длины отдельных элементов списка:Преобразование столбца матрицы в вектор с ошибкой по неизвестной причине

library(geosphere) 
from = data.frame(lon = sample(-180:180,5), lat = sample(-90:90,5)) 
to = data.frame(lon = sample(-180:180,5), lat = sample(-90:90,5)) 
plot(gcIntermediate(from, to, n=30, breakAtDateLine=T, sp=T)) 
gcs = gcIntermediate(from, to, n=30, breakAtDateLine=T, sp=F) 
print(gcs) 
l = lapply(gcs, length) 

Но, кажется, невозможно преобразовать этот список в простой вектор. Все, что я пытаюсь дает список или матрица размеров [100,1], например:

as.matrix(l)[,1] 
as.vector(l) 

ли эти данные имеют несколько отличную внутреннюю структуру, несмотря на то матрица? например сравните его с:

m = as.matrix(1:10) 
m[,1] 

Благодарен за помощь.

+0

Я не понимаю, что это за выход. Является ли это списком матриц или списком векторов? Возможно, вы могли бы сделать 'dput (l)', чтобы показать нам (или просто 'dput (l [1: 2])', если это слишком длинное?) –

+0

Также попробуйте 'sapply (l, class)', чтобы посмотреть, какой тип объектов, которые у вас есть. – asb

+1

Возможно, мне что-то не хватает, но как насчет 'l.vector <- unlist (l)'? –

ответ

1

Я бы использовал cbind или rbind, в зависимости от того, что вы после. Если это ответ на ваш вопрос, пожалуйста, внесите изменения в заголовок вопроса по известным причинам. :)

> do.call("rbind", l) 
    [,1] 
[1,] 2 
[2,] 60 
[3,] 60 
[4,] 60 
[5,] 60 
> do.call("cbind", l) 
    [,1] [,2] [,3] [,4] [,5] 

[1,] 2 60 60 60 60