メモ:RのCAR、CDR、CADR、CDAR、CDDR...
この図を見てわかった気持ちになった。
定義はこのへん。
rlangにはRの関数として用意されている(ただしexpert onlyなやつ)。
library(rlang) A <- as.pairlist(c(a = "a", b = "b")) B <- as.pairlist(c(A = "A", B = "B")) x <- pairlist(foo = A, bar = B, baz = "baz") lobstr::ast(!!x) #> o-foo = o-a = "a" #> | \-b = "b" #> +-bar = o-A = "A" #> | \-B = "B" #> \-baz = "baz" lobstr::ast(!!node_car(x)) #> o-a = "a" #> \-b = "b" lobstr::ast(!!node_cdr(x)) #> o-bar = o-A = "A" #> | \-B = "B" #> \-baz = "baz" lobstr::ast(!!node_cadr(x)) #> o-A = "A" #> \-B = "B" lobstr::ast(!!node_cdar(x)) #> o-b = "b" lobstr::ast(!!node_cddr(x)) #> o-baz = "baz" lobstr::ast(!!node_tag(x)) #> foo
Created on 2019-02-21 by the reprex package (v0.2.1)