2016-03-25 11 views
1

(+) işlevini R, s.t.'ye göre tanımlamak mümkün mü? iki argümanı arasında çalışabilir mi? Başka bir deyişleBir infix işlevinin adından% nasıl silinir?

, ben (ancak ve ben bu sorun çözülebilir bilmiyorum olamaz) aşağıdaki infix işlevinden % Silmek istediğiniz:

`%(+)%` <- function(x,y) { x+(2*y) } 
2 %(+)% 3 

cevap

3

Kullanıcı tanımlı infix numaralı operatörler numaralı telefonun R işaretinde yüzde işareti ile işaretlenmelidir. Sorunuza verilen cevap "yapamazsınız". Afedersiniz. R language definition kaynaktan

:

R kullanıcı tanımlı çatı ve çatı operatörleri sağlar. Bunlar, ‘%’ karakteriyle sınırlandırılmış bir karakter dizisi biçimine sahiptir. Dize, ‘%’ dışında yazdırılabilir herhangi bir karakter içerebilir. Dizeler için kaçış dizileri burada geçerli değildir.

Aklıma gelen tek alternatifleri, hem oldukça umutsuz:

  • x ve y eğer o zaman overload dispatch for the + symbol
  • sen (R ayrıştırıcı kesmek olabilir olabilir bir S4 sınıfın üyeleri olarak tanımlanmaktadır tavsiye edilmez!), this example'da olduğu gibi, birisi ayrıştırıcıyı değiştirmek için bir salt okunur Github aynasını çatalladı (here tarif edilmiştir).
1

Ben Bolker ile% (%) olmadan tanımlayamayacağınızı kabul ediyorum. Ancak, aşağıdaki kullanmayın neden yukarıda uyarınca bir işlev oluşturmak isteyen varsa:

`&`<- function(x, y) { x+(2*y) } 
2&3 
#Use rm to remove the defined function 
rm(`&`) 
+0

Aslında şartının + tanımlayamazsınız bir şey tanımlıyorsanız beri sonsuz bir yineleme hataya yol çünkü bu onun gerçek fonksiyonda kullanıyor. – TsTeaTime