繁体   English   中英

R中的`cons`等效于什么?

[英]What's the equivalent of `cons` in R?

在Lisp中,您可以使用cons形式追加到列表(而不是原子向量)。 R的等效函数是什么? 我尝试了Googling,但只获得了寻求R优缺点的条目。

例:

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术语中称为“递归”)。 我想这carlist_name[[1]]cdrlist_name[-1] 注意,我使用了不同的提取函数。 据我了解LisP, cdr是一个列表,但是car是第一个位置的值,它可能是也可能不是列表。

可以以更实用的格式使用[[[

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

您甚至可以定义car或cdr函数:

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

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

R语言对象都是可以具有任何长度的向量,因此cons对象没有等价物(即带有左侧和右侧的doublet)。 您可以在R中创建一个对cons对象建模的类,也可以只使用长度为lengt的向量,第一个元素是左侧,第二个元素是右侧。 您甚至可以将向量中的元素命名为“ car”和“ cdr”,例如

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

同样,R不使用指针或引用语义(环境和基于环境的事物除外)。 简而言之,R中没有“ cons”(如Lisp)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM