Можно ли удалить элемент из... и передать... на другие функции? Мои первые две попытки не удалось:
parent = function(...)
{
a = list(...)
str(a)
a$toRemove = NULL
str(a)
# attempt 1
child(a)
# attempt 2
child( ... = a )
}
child = function(...)
{
a = list( ... )
str(a)
}
parent( a = 1 , toRemove = 2 )
Изменить
Прошу прощения за путаницу. Я зафиксировал child(). Цель состояла в том, чтобы иметь дочерний список содержимого...
Edit2
Здесь более реальный пример (но все же довольно простой, поэтому мы можем иметь полезный разговор об этом). Родитель вызывается через рекурсию. Родитель должен знать глубину рекурсивного вызова. Звонящие за пределами родителя не должны знать о "глубине" и не должны устанавливать его при вызове parent(). Родитель вызывает другие функции, в этом случае child(). Ребенок нуждается в значениях... Ясно, что ребенку не нужна "глубина", потому что родитель сгенерировал его для собственного использования.
parent = function( ... )
{
depth = list(...)$depth
if ( is.null( depth ) )
{
depth = 1
}
print( depth )
# parent needs value of depth to perform various calculations (not shown here)
if ( depth == 5 )
{
return()
}
else
{
# child doesn't need "depth" in ...
child( ... )
}
# yikes! now we've added a second, third, etc. depth value to ...
parent( depth = depth + 1 , ... )
}
child = function(...)
{
# does some magic
}