# Как сделать бесконечно рекурсивный список в R: путать [и [[ -- r поле с участием list пол Связанный проблема

## How to make an infinitely recursive list in R: confuse [ and [[

0 ### проблема

русский

Редактировать: Этот вопрос глупо, я путающую [и [((спасибо @josilber), но я не могу удалить его.

Как можно сделать бесконечно рекурсивный список, l == l , в R?
Ужасный способ (для новичка R) это посмотреть на DataSet <код> fmri в пакете ASTSA :

` <код> data( fmri, package="astsa" )  # a list with fmri == fmri ... ??  print_recursive = function( x ){  # x x x ... while list     for( j in 1:5 ){         cat( class(x), len(x), names(x), " " )         str(x)         cat( " " )          x = x  # <-- wrong, should be x[]         if( class(x) != "list" )  break     }     x }  x = print_recursive( fmri )   `
Английский оригинал

Edit: this question is silly, I confused [ and [[ (thanks @josilber), but I can't delete it.

How can one make an infinitely recursive list, L == L, in R ?
A terrible way (for an R novice) is to look at dataset `fmri` in package astsa:

``data( fmri, package="astsa" )  # a list with fmri == fmri ... ??  print_recursive = function( x ){  # x x x ... while list     for( j in 1:5 ){         cat( class(x), len(x), names(x), " " )         str(x)         cat( " " )          x = x  # <-- wrong, should be x[]         if( class(x) != "list" )  break     }     x }  x = print_recursive( fmri ) ``
</div

## Список ответов

1 Ответ на «Как можно сделать бесконечно рекурсивный список, l == l , в R" в том, что невозможно, потому что вам понадобится бесконечное количество памяти для хранения списка бесконечной рекурсивной глубины. ,

, который, как говорят, вы можете создать рекурсивный список указанной глубины простым для цикла, при каждой итерации создавая новый список, который хранит старый список как один из его элементов:

` <код> l <- list() depth <- 50 for (k in seq(depth-1)) {   l <- list(l) }   `

Вы можете написать рекурсивную функцию для проверки глубины рекурсивного списка:

` <код> recursive.depth <- function(l) {   if (!is.list(l)) 0   else if (length(l) == 0) 1   else 1+max(sapply(l, recursive.depth)) } recursive.depth(l) #  50 recursive.depth(fmri) #  1   `

Возвращаясь к примеру с вопроса, список, который вы имеете на самом деле не рекурсивят вообще (это просто список матриц). Причина, по которой вы считаете рекурсивным, это то, что индексирование <Код> l подзревает список (aka it it rections rections список только с его первым элементом). Например, рассмотрим следующий очень простой список:

` <код> (l <- list(2)) # [] #  2   `

Независимо от того, сколько раз я подмножею с <Код> [ Notiator, я вернусь тот же список:

` <код> l # [] #  2 l # [] #  2   `

Запуск этого списка <код> l через ваш <код> print_recursive Функция также приведет к бесконечному циклам. Если вы хотели фактически извлечь первый элемент списка вместо того, чтобы поднимите саму список, вы должны использовать <код> [[ 1798877669 ).

The answer to "How can one make an infinitely recursive list, L == L, in R" is that it is impossible, because you would need an infinite amount of memory to store a list of infinite recursive depth.

That being said, you can build a recursive list of a specified depth with a simple for loop, at each iteration creating a new list that stores the old list as one of its elements:

``l <- list() depth <- 50 for (k in seq(depth-1)) {   l <- list(l) } ``

You could write a recursive function to check the depth of a recursive list:

``recursive.depth <- function(l) {   if (!is.list(l)) 0   else if (length(l) == 0) 1   else 1+max(sapply(l, recursive.depth)) } recursive.depth(l) #  50 recursive.depth(fmri) #  1 ``

Getting back to the example from the question, the list you have is actually not recursive at all (it's just a list of matrices). The reason you think it is recursive is that indexing `l` subsets the list (aka it returns the list with just its first element). For instance, consider the following very simple list:

``(l <- list(2)) # [] #  2 ``

No matter how many times I subset with the `[` notation, I will get back the exact same list:

``l # [] #  2 l # [] #  2 ``

Running this list `l` through your `print_recursive` function will also result in an infinite loop. If you wanted to actually extract the first element of the list instead of subsetting the list itself, you should use the `[[` notation (e.g. `l[]`).

</div

## Связанный проблема

1  Ошибка при использовании функции nnetar из пакета прогноза  ( Error when using nnetar function from forecast package )
У меня есть следующие данные: <код> kafka4 ................. Когда я выполняю функцию Nnetar, я получаю следующую ошибку: <код> kafka5 Я попробова...

1  Есть ли не-Java внедрение регрессионной модели M5P библиотеки RWEKA?  ( Is there a non java implementation of the m5p regression model of the rweka libr )
Я ищу функцию, которая создает модель регрессии M5P, как <код> M5P функция <код> RWeka библиотеки (как <код> M5P функция на основе кода Java, который имеет...

12  Частные члены в R Справочник класса R  ( Private members in r reference class )
Можно ли иметь частные поля элементов внутри класса R r. Играя с некоторыми из онлайн-примеров у меня есть: <код> > Account <- setRefClass( "ref_Account"...

0  R Язык: Как работать с динамически размером вектора?  ( R language how to work with dynamically sized vector )
Я изучаю программирование R, и пытаясь понять лучший подход к работе с вектором, когда вы не знаете, последний размер, он в конечном итоге будет. Например, в ...

0  Ошибка при использовании списков  ( Error when using lists )
У меня есть файл .rdata со списком внутри. Однако я получаю сообщение об ошибке при попытке отобразить список. <код> ls(data\$Test\$t0) Error in list2env(lis...

0  Извлечение данных из нижних слоев в растробрике  ( Extracting data from lower layers in a rasterbrick )
Итак, я извлекаю данные из растробрика, который я сделал, используя метод из этого вопроса: Как извлечь данные из растробрика? В дополнение к получению да...

5  Расчет дней в месяц между интервалом двух дат  ( Calculating days per month between interval of two dates )
У меня есть набор событий, которые каждый из которых имеет начало и окончание, но они проходят по объему ряда месяцев. Я хотел бы создать таблицу, которая пок...

8  Использование геоконининов в качестве координат вершин в Igraph R-пакет  ( Using geo coordinates as vertex coordinates in the igraph r package )
в пакете igraph для R, я борюсь, чтобы построить социальную сеть, используя координаты широты / долготы в качестве макета графика. Представьте себе этот про...

0  Коэффициент переменных членства в R  ( Coefficient variable membership in r )
Я разработал ужасно длительное решение для этого перед использованием регулярных выражений, но я надеюсь, что есть более родственный способ сделать это. Учи...

7  Ось X не соответствует барплоту  ( X axis does not match barplot )
Я использовал функцию barplot () для создания сложенного диаграммы из матрицы. Матрица выглядит так: <код> 1 0.989013 0.010987 2 0.999990 0.000010 3 0.999...

0  Трудно заполнить NAS с вмененными ценностями петлей, но не один за другим  ( Difficultly filling nas with imputed values by loop but not one by one )
Так что у меня есть матрица в R, это подмножество данных DataFrame, удерживающееся немного больше, чем идентификатор, группируя переменную и серии 1100 показа...

2  dlyryr "не обещание" ошибка  ( Dplyr not a promise error )
У меня есть набор набора панели, для которого я создал отсталые переменные с помощью функции LAG (). Когда я пытаюсь рассчитать дельта для каждого TimePoint, ...

2  Как изменить график разброса GGPlot2  ( How to modify ggplot2 scatter plot )
Вот мой набор данных: <код> df1 = data.frame(Count.amp = c(8,8,1,2,2,5,8), Count.amp.1 = c(4,4,2,3,2,5,4)) Я попробовал <код> library(ggplot2) qplot(C...

1  Как прочитать файлы суффикса .avl в r?  ( How to read avl suffix files into r )
Я загрузил глобальные водно-болотные угодья и озерные данные из этой ссылки: https://www.worldwildlife.org/pages/globalakes- и-водно-болотный угодья база дан...

6  403 Ошибка при использовании Rvest для входа в веб-сайт для соскабливания  ( 403 error when using rvest to log into website for scraping )
Я пытаюсь высказать страницу на веб-сайте, который требует входа в систему и в целом получение ошибки 403. Я изменил код из этих 2 сообщений для моего сайта...