簡體   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