我可以删除。。。(点点)然后把它传下去?

是否可以从…中删除元素。。。然后通过。。。其他功能?我的前两次尝试都失败了:

parent=函数(…)
{
a=列表(…)
str(a)
a$toRemove=NULL
str(a)
#尝试1
儿童(a)
#尝试2
儿童(…=a)
}
子=函数(…)
{
a=列表(…)
str(a)
}
父级(a=1,toRemove=2)

编辑
很抱歉搞混了。我修复了child()。目的是让孩子们列出

编辑2
这里有一个更真实的例子(但仍然相当简单,因此我们可以就此进行有用的对话)。父对象通过递归调用。父级需要知道递归调用的深度。父级之外的调用方不应该知道“深度”,也不应该在调用parent()时设置“深度”。Parent调用其他函数,在本例中为child()。儿童需要价值观。。。显然,子级不需要“深度”,因为父级生成它是为了自己使用

parent=函数(…)
{
深度=列表(…)$depth
如果(为空(深度))
{
深度=1
}  
打印(深度)
#父级需要深度值来执行各种计算(此处未显示)
如果(深度==5)
{
返回()
}
其他的
{
#孩子不需要“深度”在。。。
儿童(……)
}
#哎呀!现在我们为…添加了第二、第三等深度值。。。
父级(深度=深度+1,…)
}
子=函数(…)
{       
#有魔法吗
}

操作这些内容的一种方法是将子函数封装在父函数中,并使用一个定义,将您不想传递给子函数的任何参数置于参数之后。例如:

父级<-函数(…){
localChild<-函数(…,toRemove)子函数(…)
localChild(…)
}
儿童<-职能(a){
a+10
}
&燃气轮机;父级(a=1,toRemove=10)
[1] 11

另一种方法是使用do.call()

parent2<-函数(…){
a<-列表(…)
$toRemove<-空
do.呼叫(儿童2,a)
}
儿童2<-职能(b){
b+10
}
&燃气轮机;父母2(b=1,toRemove=10)
[1] 11

根据您的实际用例,do.call()可能与您的问题最接近

发表评论