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

时间:2014-03-16 12:44:05

标签: r

The R documentation

  如果x是原子类型(或NULL)并且为FALSE,则

is.atomic返回TRUE   否则。

     如果x具有递归(类似列表)结构,则

is.recursive返回TRUE   否则就错了。

     

is.atomic对于原子类型是真的(“逻辑”,“整数”,   “numeric”,“complex”,“character”和“raw”)和NULL。

     

除了原子之外,大多数类型的对象都被认为是递归的   types,NULL和符号(由as.name指定)。

根据以上所述,我认为向量是一个递归对象,但两个函数显示相反。

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

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

2 个答案:

答案 0 :(得分:8)

对R中的某种对象进行递归意味着您可以将此对象保存为自己的类型作为条目。原子是相反的。 向量是原子的,列表是递归的,因为您可以轻松检查。

原子结构,如矢量,将具有扁平结构。例如,以下代码将导致相同的结果:

c(1,2)
c(1, c(2))

矢量中的所有元素都具有相同的类型

c(1, 'a')

将强制1作为角色

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

list(1, list(2, 3))

答案 1 :(得分:0)

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

  

dir.create(file.path(" dir1"," dir2"),recursive = TRUE)

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

  

取消关联(" dir2",recursive = TRUE)