Я знаю, что это было задано раньше, но у меня возникли проблемы с пониманием того, что я нашел. Я ищу создать массив фиксированной длины массива двойников в R, что было бы правильным объявлением для этого? Я думаю, что хочу быть в состоянии выдвинуть элементов в этих массивах, что-то вроде array[1][]=0.1
, array[2][]=0.2
и т.д.R фиксированная длина массива пустых массивов
ответ
Один из способов сделать это:
list_a<-vector("list",number_of_vectors)
, а затем установить каждый элемент списка с помощью
list_a[[i]]<-c(list_a[[i]],num_to_push_back);
и т. д. для каждого i
.
Вы можете вырастить векторы в списке - но это не очень желательно, чтобы вырастить вещи в R
...
Затем вы можете сделать list_a[[a]][b]
для вашего массива. Но синтаксис трагичен, и я уверен, что производительность будет медленнее, чем Джексон на пропофоле.
Другой, более «R-идиоматический» способ избежать использования оборванных массивов может состоять в том, чтобы предварительно выделить (или создать/независимо) матрицу с размерами, большими, чем длина вашего самого большого вектора. Недостающие значения более коротких векторов могут быть заполнены NA
- многие/большинство функций в R предназначены для работы с NA
. Или просто используйте функцию na.omit
при использовании векторов. Например,
Not_a_ragged_array=matrix(NA,10,10) #a 10 by 10 matrix filled with NAs
#fill each column with a vector of random numbers, of random length
num_rows=sample.int(9,10,replace=TRUE); for(i in 1:10){Not_a_ragged_array[1:num_rows[i],i]=rbinom(num_rows[i],10,0.8)}
Not_a_ragged_array
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 8 9 7 8 7 10 8 7 9 9
# [2,] 8 10 NA 6 8 9 8 NA 8 6
# [3,] 7 7 NA 10 7 9 9 NA 9 9
# [4,] NA 9 NA 6 10 7 NA NA 6 9
# [5,] NA 5 NA 9 7 6 NA NA NA 9
# [6,] NA 8 NA 9 9 NA NA NA NA 8
# [7,] NA NA NA 9 NA NA NA NA NA 9
# [8,] NA NA NA 8 NA NA NA NA NA 8
# [9,] NA NA NA NA NA NA NA NA NA NA
#[10,] NA NA NA NA NA NA NA NA NA NA
as.vector(na.omit(Not_a_ragged_array[,1])) #get individual vectors like this
#[1] 8 8 7
Это функциональность, которую я искал. Не слишком знакомы с типами данных R и производительностью - есть ли более целесообразный способ этого? –
Это нормально. Обычно люди задают вопросы, когда они не знакомы с ответом ... так что это ожидалось. Я * думаю * это единственный (другие методы - это варианты этого) пути в R, чтобы создать объект, который вы ищете (оборванный массив). Вы можете посмотреть здесь варианты на ту же тему: http://www.r-bloggers.com/efficient-ragged-arrays-in-r-and-rcpp/. Чтобы определить, действительно ли ваша * актуальная * проблема требует использования оборванного массива, вам нужно будет узнать больше о вашей проблеме. Я отредактировал ответ с более «идиоматическим» предложением, чтобы избежать оборванных массивов. –
- 1. Фиксированная длина массива против полей
- 2. PHP: создание массива массивов, игнорирование пустых массивов
- 3. длина массива на многомерных массивов
- 4. C# фиксированная длина строки
- 5. C++ фиксированная длина строки?
- 6. Python STRFTIME% Фиксированная длина
- 7. Фиксированная длина Хэш
- 8. Объединение пустых/нулевых массивов
- 9. Фиксированная длина SortedMap в Scala
- 10. Фильтр пустых массивов
- 11. Генерация случайный, фиксированная длина массива байт в Go
- 12. Java; Длина двумерных массивов
- 13. Длина разреженных массивов
- 14. Julia массив пустых массивов
- 15. Удаление Пустых ячеек массивов
- 16. Ошибка пустых массивов
- 17. Initialise массив пустых массивов
- 18. R фиксированная точка функции
- 19. Длина массива в Perl
- 20. Длина массива в процессе?
- 21. Фиксированная длина Float в C/C++?
- 22. Создать строку, большую, чем фиксированная длина
- 23. CSS - Нижняя длина борта фиксированная до 60%
- 24. IPad вращения элементов расстояние фиксированная длина
- 25. Animate HTML следующая/предыдущая фиксированная длина
- 26. Фиксированная длина Буквенно-цифровая генерация в Informatica
- 27. Фиксированная длина для кнопок в css
- 28. Sum длина массива elasticsearch
- 29. Наименьшая длина массива
- 30. пользовательский набор вводимых массивов длина
Как это отличается от двухстрочной матрицы с N столбцами? Определение списка длины N и заполнение его двумя векторами элементов также легко. –
Я нажимаю элементы внутри петли, чтобы в итоге было N массивов разной длины. –
Тогда это всего лишь список. Где осложнение? –