Могу ли я удалить элемент в… (точка-точка -dot) и передать его?

Можно ли удалить элемент из ... и передать ... другим функциям? Мои первые две попытки потерпели неудачу:

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 не должны знать о «глубине» и не должны устанавливать ее при вызове 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    
}
22
задан Aaron - Reinstate Monica 11 August 2013 в 04:18
поделиться