第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在R中使用“<-”(范圍分配)?

如何在R中使用“<-”(范圍分配)?

蕪湖不蕪 2019-07-16 16:10:21
如何在R中使用“<-”(范圍分配)?我剛讀完R簡介中的范圍界定,我很好奇<<-任務(wù)。手冊給出了一個(非常有趣)的例子<<-我覺得我能理解。我仍然缺少的是什么情況下這可能是有用的。因此,我想從您這里讀到的是示例(或指向示例的鏈接)。<<-可能是有趣的/有用的。使用它的危險是什么(看起來很容易失控),以及任何您可能想分享的提示。
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

<<-與閉包一起維護狀態(tài)最有用。以下是我最近的一篇論文中的一節(jié):

閉包是由另一個函數(shù)編寫的函數(shù)。閉包之所以被稱為閉包,是因為它們圍封父函數(shù)的環(huán)境,并可以訪問該函數(shù)中的所有變量和參數(shù)。這很有用,因為它允許我們有兩個級別的參數(shù)。一個級別的參數(shù)(父級)控制函數(shù)的工作方式。另一層(孩子)做這項工作。下面的示例演示如何使用此思想生成一系列冪函數(shù)。父函數(shù)(power)創(chuàng)建子函數(shù)(squarecube)這實際上是一項艱苦的工作。

power <- function(exponent) {
  function(x) x ^ exponent}square <- power(2)square(2) # -> [1] 4square(4) # -> [1] 16cube <- power(3)cube(2) # -> [1] 8cube(4) # -> [1] 64

在兩個級別管理變量的能力還使得通過允許函數(shù)修改父函數(shù)環(huán)境中的變量來維護跨函數(shù)調(diào)用的狀態(tài)成為可能。在不同級別管理變量的關(guān)鍵是雙箭頭賦值操作符。<<-..與通常的單一箭頭分配不同(<-)如果始終在當(dāng)前級別上工作,則雙箭頭運算符可以修改父級別中的變量。

這樣就可以維護一個計數(shù)器來記錄函數(shù)被調(diào)用的次數(shù),如下例所示。每次new_counter,則創(chuàng)建一個環(huán)境,初始化計數(shù)器。i在這個環(huán)境中,然后創(chuàng)建一個新函數(shù)。

new_counter <- function() {
  i <- 0
  function() {
    # do something useful, then ...
    i <<- i + 1
    i  }}

新函數(shù)是封閉的,它的環(huán)境是封閉的環(huán)境。當(dāng)關(guān)閉時counter_onecounter_two運行時,每個計數(shù)器都會在其包圍的環(huán)境中修改計數(shù)器,然后返回當(dāng)前計數(shù)。

counter_one <- new_counter()counter_two <- new_counter()counter_one() # -> [1] 1counter_one() # -> [1] 2counter_two() # -> [1] 1


查看完整回答
反對 回復(fù) 2019-07-16
?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

它有助于思考<<-相當(dāng)于assign(如果設(shè)置inherits函數(shù)中的TRUE)。.的利益assign它允許您指定更多的參數(shù)(例如環(huán)境),所以我更喜歡使用assign過關(guān)<<-在大多數(shù)情況下。

使用<<-assign(x, value, inherits=TRUE)意味著“搜索所提供環(huán)境的封閉環(huán)境,直到遇到變量‘x’。”換句話說,它將繼續(xù)按順序遍歷環(huán)境,直到找到一個具有該名稱的變量,并將其賦值給該變量。這可以在函數(shù)的范圍內(nèi),也可以在全局環(huán)境中。

為了了解這些函數(shù)的作用,您還需要了解R環(huán)境(例如,使用search).

在運行大型模擬時,我經(jīng)常使用這些函數(shù),并且希望保存中間結(jié)果。這允許您在給定函數(shù)的作用域之外創(chuàng)建對象,或者apply循環(huán)。這是非常有幫助的,特別是如果您對大循環(huán)意外結(jié)束(例如數(shù)據(jù)庫斷開)有任何擔(dān)心,在這種情況下,您可能會丟失整個過程中的所有內(nèi)容。這相當(dāng)于在長時間運行的過程中將結(jié)果寫入數(shù)據(jù)庫或文件,而不是將結(jié)果存儲在R環(huán)境中。

我對此的主要警告是:要小心,因為您現(xiàn)在正在處理全局變量,特別是在使用<<-..這意味著,當(dāng)您期望函數(shù)使用作為參數(shù)提供的對象值時,您可能會遇到這樣的情況:函數(shù)正在使用來自環(huán)境的對象值。這是函數(shù)式編程試圖避免的主要問題之一(請參閱副作用)。我通過將值賦值給函數(shù)中從未使用過的唯一變量名(使用帶有集合或唯一參數(shù)的粘貼)來避免這個問題,但只用于緩存,以防以后需要恢復(fù)(或?qū)χ虚g結(jié)果進行一些元分析)。


查看完整回答
反對 回復(fù) 2019-07-16
  • 3 回答
  • 0 關(guān)注
  • 737 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號