Как добавить 60 значений времени в список из 4 миллионов объединенных значений долготы и широты? - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сделать вектор длиной 244 466 460, который представляет собой долготу, широту и время, как одно значение, например, -1556788_-2323088_558322882.

Я извлек долготу и широты из моего файла NetCDF иобъединяет их в переменную concatLonLat, большой символ, 4,074,441 элементов, например, -1556788_-2323088

Как мне взять 4 миллиона значений lonLat и добавить время, чтобы данные были такими:

[1,] -1556788_-2323088_558322882 (первый раз добавляется в первый ряд)

...

[4074441,] -1608563_-2275088_558322882 (первый раз добавляется в 4(миллионная строка)

[4074442,] -1556788_-2323088_559705304 (второй раз добавляется к следующим 4 миллионам строк и т. д. и т. д.)

Почему я это делаю?Я задал предыдущий вопрос о нормированном разностном индексе воды (NDWI), и мне сказали векторизовать - что я и сделал успешно.

Но если я использую полные векторы Red Green BLue для формирования матрицы для запуска RGB2Lab ()У меня заканчивается память.Я могу уменьшить свои векторы на 80%, взяв все значения открытой воды.И тогда не хватит памяти.

Но тогда я не могу сопоставить long, lat и время с векторами или матрицами RGB и Lab.Если нет какой-то функции, которую мне не хватает, которая сделает это для меня.Так что, если я сделаю вектор длинных широт и времени, который совпадает с другими моими векторами, а затем вычту те же 80%, то все векторы будут совпадать, верно?

И тогда я могу запустить функцию RGB2Lab с помощью lon latи время.

1 Ответ

0 голосов
/ 23 ноября 2018

Ссылка на этот вопрос вы можете использовать:

as.vector(outer(coords, times, paste, sep="_"))

, где coords - вектор значений lon / lat, а times - вектор значений времени.

Пример:

x <- c("test", "test2", "test3")
y <- 1:2

as.vector(outer(x, y, paste, sep = "_"))
[1] "test_1"  "test2_1" "test3_1" "test_2"  "test2_2" "test3_2"
...