Rでnames(x) <- "a name"的な代入を定義するには
今まで一度たりとも作る必要を感じたことがなく、言語定義を見ても特段何も書いていないようなので、関数呼び出しへの代入(?)はユーザー定義はでき無いのかなと思っていた*1のですが、ヘルプを見ていたら*2
The functions 'dim' and 'dim<-' are internal generic primitive functions.
などと書いてあって、dimとは別にdim<-と言う関数が別にあるように書かれています。実際、get("colnames")とget("colnames<-")をすると、二つで中身は異なります。
つまり、名前の末尾が<-にすれば関数呼び出しへの代入定義になるのかなと思って、
assign("example<-", function(x, value){ 2*value - x })
と書いたら、
x <- 7 example(x) <- 3
とできました。xの値が-1になります。同時に、
4 -> example(x)
もできるようになります。ユーザー定義のS3/S4オブジェクトへの値の代入などに便利そうですが、見かけたことが無いような、覚えていないだけなような・・・