我搜索了一個參考來學習R中的替換函數,但是我還沒有找到任何東西。我想了解的R.替換功能,我有下面的代碼的概念,但我不明白:什麼是R中的替換函數?
"cutoff<-" <- function(x, value){
x[x > value] <- Inf
x
}
,然後我們稱之爲截止用:
cutoff(x) <- 65
莫非任何人都可以解釋R中的替代函數是什麼?
我搜索了一個參考來學習R中的替換函數,但是我還沒有找到任何東西。我想了解的R.替換功能,我有下面的代碼的概念,但我不明白:什麼是R中的替換函數?
"cutoff<-" <- function(x, value){
x[x > value] <- Inf
x
}
,然後我們稱之爲截止用:
cutoff(x) <- 65
莫非任何人都可以解釋R中的替代函數是什麼?
當你調用
cutoff(x) <- 65
你實際上是調用
x <- "cutoff<-"(x = x, value = 65)
函數的名稱必須用引號引起來,因爲它是語法上有效,但不規範的名稱和解析器會如果操作符未被引用,則不作爲函數名稱的一部分解釋爲<-
。
"cutoff<-"()
就像任何其他功能(雖然有一個奇怪的名字);它會根據value
(其中x
大於65
至Inf
(無限))設置任何值來更改其輸入參數。
神奇,當你調用函數這樣
cutoff(x) <- 65
,因爲R的解析時,拉出各個位,使上面顯示的實時調用真正被完成。
更一般地,我們有
FUN(obj) <- value
[R發現功能"FUN<-"()
,並通過將obj
和value
到"FUN<-"()
和安排的"FUN<-"()
結果被分配回obj
建立呼叫,因此它調用:
obj <- "FUN<-"(obj, value)
這是一個有用的參考編隊是R Language Definition Section 3.4.4: Subset assignment;討論是有點傾斜的,但似乎是最正式的參考文獻(替換功能在R FAQ(R和S-PLUS之間的區別)中以及在R語言參考(各種技術問題)中被提及,但在官方文件中我沒有找到任何進一步的討論)。
非常非常有幫助的答案...非常感謝您:) – Sam 2012-07-19 15:02:29
Gavin對替換函數的解釋提供了極好的討論。我想提供一個參考,因爲您還要求:R Language Definition Section 3.4.4: Subset assignment。
我欣賞它Brian。 – Sam 2012-07-19 17:00:50
有用,但只有鏈接的答案...我正在編輯@ GavinSimpson的答案添加它...... – 2014-11-07 21:19:29
請記住,在R中所有的操作都是一個函數調用(因此也是賦值操作),所有存在的東西都是一個對象。 代用功能充當如果他們修改它們的就位參數諸如在
colnames(d) <- c("Input", "Output")
它們具有標識符<-
在它們的名稱的末尾,並返回參數對象的經修改的拷貝(非原始置換函數)或同一對象(原始替代功能)
於R提示,以下將不起作用:
> `second` <- function(x, value) {
+ x[2] <- value
+ x
+ }
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> second(x) <- 9
Error in second(x) <- 9: couldn't find function "second<-"
正如你看到的,R是不是搜索環境second
,但是對於second<-
。 所以,讓我們做同樣的事情,但使用這樣的功能標識代替:
> `second<-` <- function(x, value) {
+ x[2] <- value
+ x
+ }
現在,在載體的第二位置的分配工作:
> second(x) <- 9
> x
[1] 1 9 3 4 5 6 7 8 9 10
我也寫了一個簡單的腳本來列出R基礎包中的所有替換功能,find it here。
在您的博客上發表了關於腳本的評論,以提供所有替換函數:「您是否錯過了那些替換函數,之間的「'<-'」?例如'split < - 。default'和 'split < - 。data.frame'?「 – 2016-05-14 17:04:08
@ManuelS我在檢查: '>裂< - data.frame Fehler:OBJEKT '.data.frame' nicht gefunden >裂< - 默認 Fehler:OBJEKT '.DEFAULT' nicht gefunden >' – TMOTTM 2016-05-17 18:04:25
@ManuelS哈德利沒有寫在Advanced R中有關這些命名函數的任何內容。您是否提供了您提到的函數的參考? – TMOTTM 2016-05-17 18:13:14
這是一個完全可以接受的Q值SO – 2012-07-19 14:46:35
['levels <-'(這是什麼巫術?)(http://stackoverflow.com/questions/10449366/levels-what-sorcery-is-this ) – 2012-07-19 17:03:44
請參閱**擴展R.-約翰錢伯斯(2016)**:*第5章第73至79頁* – 2016-11-13 05:24:55