什么';R中的“cons”是什么意思?
在lisp中,您可以使用什么';R中的“cons”是什么意思?,r,list,R,List,在lisp中,您可以使用cons表单附加到列表(而不是原子向量)。R中的等效函数是什么?我试着用谷歌搜索,但只得到了寻找R的利弊的条目。R语言对象都是向量,可以有任何长度,因此没有与cons对象等价的内容(即,一个左右两侧的双行)。您可以在R中创建一个类来模拟cons对象,或者您可以只使用长度为2的向量,第一个元素是左侧,第二个元素是右侧。您甚至可以将向量中的元素命名为“car”和“cdr”,如中所示 x <- c(1,2) names(x) <- c('car','cdr') x
cons
表单附加到列表(而不是原子向量)。R
中的等效函数是什么?我试着用谷歌搜索,但只得到了寻找R的利弊的条目。R语言对象都是向量,可以有任何长度,因此没有与cons对象等价的内容(即,一个左右两侧的双行)。您可以在R中创建一个类来模拟cons对象,或者您可以只使用长度为2的向量,第一个元素是左侧,第二个元素是右侧。您甚至可以将向量中的元素命名为“car”和“cdr”,如中所示
x <- c(1,2)
names(x) <- c('car','cdr')
x示例:
x <- list("A")
y <- c(x, "B")
y
[[1]]
[1] "A"
[[2]]
[1] "B"
R列表(在R术语中称为“递归”)可以使用整数索引访问,或者如果有具有字符值的特定叶的名称,则可以访问。我想car
应该是list\u name[[1]]
而cdr
应该是list\u 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"
>轿厢(y)
[1] “A”
>指挥官(y)
[[1]]
[1] “B”
不确定cons
做了什么。如果要附加到列表中,请使用c
或append
即append(列表(1:3),3)
如果要表示键:值对集合名(列表(1:3),3)
x
不是列表,而是一个原子向量。
> car <- function(z) z[[1]]
> car(y)
[1] "A"
> cdr <- function(z) z[-1]
> cdr(y)
[[1]]
[1] "B"