R 递归对象和原子对象的定义是什么?

R 递归对象和原子对象的定义是什么?,r,R,说 如果x是原子类型(或NULL)且FALSE 否则 is.recursive如果x具有递归(list-like)结构,则返回TRUE 和FALSE否则 is.atomic对于原子类型(“logical”,“integer”)是真的, “数字”,“复杂”,“字符”和“原始”)和空值 除原子对象外,大多数类型的对象都被视为递归对象 类型、NULL和符号(由as.name给出) 根据上面的内容,我认为向量是一个递归对象,但这两个函数显示了相反的结果 函数(如c)也是递归对象 那么R中递归对象和原子对

如果
x
是原子类型(或
NULL
)且
FALSE
否则

is.recursive
如果
x
具有递归(
list
-like)结构,则返回
TRUE
FALSE
否则

is.atomic
对于原子类型(
“logical”
“integer”
)是真的,
“数字”
“复杂”
“字符”
“原始”
)和
空值

除原子对象外,大多数类型的对象都被视为递归对象 类型、
NULL
和符号(由
as.name
给出)

根据上面的内容,我认为向量是一个递归对象,但这两个函数显示了相反的结果

函数(如
c
)也是递归对象


那么R中递归对象和原子对象的定义是什么呢?

对于R中的对象类型是递归的,这意味着您可以将这个对象作为一个条目保存它自己的类型。原子是相反的。 向量是原子的,列表是递归的,您可以很容易地进行检查

一个原子结构,像一个向量,将有一个平面结构。例如,以下代码将导致相同的结果:

c(1,2)

c(1,c(2))

此外,向量中的所有元素都将具有相同的类型

c(1,'a')

将强制1作为字符

另一方面,列表可以具有嵌套结构,例如


list(1,list(2,3))

根据我的理解,如果我错了,请纠正我,在有嵌套目录的地方使用递归参数。例如 如果我必须创建一个目录'dir1'和它自己的子目录'dir2',我会使用递归参数

dir.create(file.path(“dir1”、“dir2”),recursive=TRUE)

同样,删除目录及其所有内容时使用递归参数,以确认您知道正在执行该任务

取消链接(“dir2”,recursive=TRUE)


一个自然的起点是读取向量。为什么你认为向量是递归的?您提供的链接中的示例包括对向量调用
is.atomic
is.recursive
,结果分别为
TRUE
FALSE