2015-01-30 5 views
1

В lisp вы можете добавить в список (а не атомный вектор) форму cons. Какова эквивалентная функция в R? Я попробовал Googling, но получил только записи, которые ищут плюсы и минусы R.Что эквивалентно `cons` в R?

+1

Не уверен, что 'делает cons'. Если вы хотите добавить в список, используйте 'c' или' append', т.е. 'append (list (1: 3), 3)' – akrun

+0

Если он представляет пары ключ: значение 'setNames (список (1: 3), 3)' – akrun

ответ

1

Пример:

x <- list("A") 
y <- c(x, "B") 
y 
[[1]] 
[1] "A" 

[[2]] 
[1] "B" 

В R функция c перегружена. Он объединяет списки, атомные векторы и многие другие структуры.

> methods(c) 
[1] c.bibentry*  c.Date   c.noquote   c.numeric_version c.person*   
[6] c.POSIXct   c.POSIXlt   c.warnings 

списки R (так называемые «рекурсивный» в R жаргоне) можно получить с помощью целочисленных индексов или если есть имена для конкретного листа со значением символа. Я полагаю, что car будет list_name[[1]], а cdr будет list_name[-1]. Обратите внимание, что я использовал различные функции извлечения. Как я понимаю, LisP, cdr - это список, но car - это значение в первой позиции, которая может быть или не быть списком.

Можно использовать [[ или [ в более функциональном формате:

> '[['(y, 1) 
[1] "A" 
> '['(y, -1) 
[[1]] 
[1] "B" 

И вы могли бы даже определить автомобиль или CDr функции:

> car <- function(z) z[[1]] 
> car(y) 
[1] "A" 

> cdr <- function(z) z[-1] 
> cdr(y) 
[[1]] 
[1] "B" 
0

Объекты языка R - это все векторы, которые могут иметь любую длину, поэтому нет эквивалентного объекта cons (т.е. дублет с левой и правой стороной) , Вы можете создать класс в R, который моделирует объект cons, или вы можете просто использовать векторы lengt two, а первый элемент - это левый, а второй - правый. Можно даже назвать элементы в векторе «автомобиль» и «корд», как и в

x <- c(1,2) 
names(x) <- c('car','cdr') 

Кроме того, R не используют указатели, или справочные семантики (для сред и вещей, основанных на условиях, за исключением). Короче говоря, нет никаких «минусов» (как в шепелявости) в R.

+1

'x' не является списком. Это атомный вектор. –

Смежные вопросы