国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第三章:R語言編程 第五節(jié):值傳遞&對象不變性

這篇具有很好參考價值的文章主要介紹了第三章:R語言編程 第五節(jié):值傳遞&對象不變性。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、值傳遞

在R語言中,一切皆為對象,同時在調(diào)用函數(shù)的時候也采用值傳遞的方式,即作為參數(shù)的對象會被復(fù)制,然后將副本傳遞給函數(shù)

例如:

> f<-function(df2){
+?? df2$a<-c(1,2,3)
+ }
> df<-data.frame(a=c(4,5,6))
> f(df)
> df
? a
1 4
2 5
3 6

這里將數(shù)據(jù)框作為參數(shù)傳遞給函數(shù)的時候,函數(shù)內(nèi)部的修改將不會影響原對象。這是因為調(diào)用f()函數(shù)時采用的時值傳遞的方法;df2中保持的不是指向原始數(shù)據(jù)df的引用,而是復(fù)制數(shù)據(jù)框df,df2指向的是副本數(shù)據(jù)框

如果我們想讓函數(shù)內(nèi)部的改動影響到函數(shù)外部,則需要在函數(shù)f()內(nèi)部用返回值修改語句,然后再將函數(shù)的返回值的修改結(jié)果賦值給原來的變量

例如:

> f<-function(df2){
+?? df2$a<-c(1,2,3)
+?? return(df2)
+ }
> df<-data.frame(a=c(4,5,6))
> df<-f(df)
> df
? a
1 1
2 2
3 3

因此我們可以得出結(jié)論,除了特殊對象以外,對象狀態(tài)不會被函數(shù)直接修改,無論哪種函數(shù)能能保證參數(shù)傳遞的對象不被修改

PS:這一部分我覺得結(jié)合C++中指針那一塊的內(nèi)容食用更佳

二、對象不變性

R中的對象通常是不變的,在編程中,值不變意味著數(shù)值不能被修改

例如:

> a<-list()
> a$b<-c(1,2,3)

這則代碼實(shí)際上進(jìn)行的步驟是先復(fù)制a,創(chuàng)建新對象a',然后向?qū)ο骯'添加屬性b,再將c(1,2,3)填充到b,最后讓變量名指向a'。

第三章:R語言編程 第五節(jié):值傳遞&對象不變性,某人的R語言學(xué)習(xí)筆記,r語言,開發(fā)語言,程序人生

而并非在a中直接開辟一個新屬性b,讓后將c(1,2,3)復(fù)制給b

我們利用對象復(fù)制追蹤函數(shù)tracemem()進(jìn)行查看

> a<-list()
> tracemem(a)
[1] "<000001D6746E3A80>"
> tracemem(a$b<-c(1,2,3))
[1] "<000001D6771B61E8>"

我們可以發(fā)現(xiàn)內(nèi)存地址進(jìn)行了更改,意味著其進(jìn)行了復(fù)制導(dǎo)致內(nèi)存地址增加

所以在R語言里使用循環(huán)語句是很不明智的,因為會導(dǎo)致內(nèi)存占用不斷增加吃掉太多資源,從而讓效率降低,因此我們還是推薦使用向量來代替實(shí)現(xiàn)循環(huán)語句

例如我們要實(shí)現(xiàn)1~1000000全體加1文章來源地址http://www.zghlxwxcb.cn/news/detail-838364.html

循環(huán)語句

> v<-1:1000000
> for(i in 1:1000000)
+?? v[i]<-v[i]+1

執(zhí)行完畢后會發(fā)現(xiàn)內(nèi)存急速擴(kuò)大

利用向量

> v<-1:1000000
> v<-v+1

這樣會快很多,而且占用資源更低

到了這里,關(guān)于第三章:R語言編程 第五節(jié):值傳遞&對象不變性的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • CMD與DOS腳本編程【第三章】

    預(yù)計更新 第一章. 簡介和基礎(chǔ)命令 1.1 介紹cmd/dos腳本語言的概念和基本語法 1.2 講解常用的基礎(chǔ)命令和參數(shù),如echo、dir、cd等 第二章. 變量和運(yùn)算符 2.1 講解變量和常量的定義和使用方法 2.2 介紹不同類型的運(yùn)算符和運(yùn)算規(guī)則 第三章. 控制流程和條件語句 3.1 介紹if、else、for、

    2024年02月06日
    瀏覽(26)
  • 《Opencv3編程入門》學(xué)習(xí)筆記—第三章

    《Opencv3編程入門》學(xué)習(xí)筆記—第三章

    記錄一下在學(xué)習(xí)《Opencv3編程入門》這本書時遇到的問題或重要的知識點(diǎn)。 一、圖像的載入、顯示和輸出到文件 (一)OpenCV的命名空間 簡單的OpenCV程序標(biāo)配: (二)Mat類簡析 表示從指定路徑下把名為dota.jpg的圖像載入到Mat類型的srcImage 變量中。 (三)圖像的載入與顯示概述

    2024年02月08日
    瀏覽(90)
  • 第三章 MATLAB的分支語句和編程設(shè)計

    ? ? ? ? 在前面的章節(jié)中,我們開發(fā)了幾個完全運(yùn)轉(zhuǎn)的 MATLAB 程序。但是這些程序都十分 簡單,包括一系列的 MATLAB 語句,這些語句按照固定的順序一個接一個的執(zhí)行。像這 樣的程序我們稱之順序結(jié)構(gòu)程序。它首先讀取輸入,然后運(yùn)算得到所需結(jié)果,打印出結(jié) 果,并退出。至

    2024年02月05日
    瀏覽(19)
  • Qt編程基礎(chǔ) | 第三章-控件 | 3.3、對話框

    Qt編程基礎(chǔ) | 第三章-控件 | 3.3、對話框

    對話框:在主窗口中操作,有可能觸發(fā)某一個行為動作,會彈出一個新的對話窗口,解決一個臨時性的會話,在對話窗口中執(zhí)行某一個功能。QDialog可以作為自定義對話框的基類,同時Qt也提供了一些標(biāo)準(zhǔn)對話框,例如:QFileDialog、QColorDialog等,下面是QDialog類的繼承結(jié)構(gòu),如下

    2024年02月06日
    瀏覽(93)
  • c語言修煉第三章--結(jié)構(gòu)體

    c語言修煉第三章--結(jié)構(gòu)體

    目錄 前言 3.1結(jié)構(gòu)體的含義以及語法 3.1.1結(jié)構(gòu)體含義 3.1.2結(jié)構(gòu)體語法形式 3.1.2結(jié)構(gòu)體變量的創(chuàng)建和初始化 3.2結(jié)構(gòu)體成員的類型 3.3結(jié)構(gòu)體的成員訪問 3.3.1.操作符 3.3.2-操作符 3.4結(jié)構(gòu)體傳參 小伙伴們大家好!歡迎繼續(xù)和菜菜醬學(xué)習(xí)c語言吶!之前菜菜醬有事所以耽誤啦,廢話不多

    2024年02月16日
    瀏覽(20)
  • Windows原生藍(lán)牙編程 第三章 配對后進(jìn)行藍(lán)牙通信【C++】

    Windows原生藍(lán)牙編程 第三章 配對后進(jìn)行藍(lán)牙通信【C++】

    藍(lán)牙系列文章目錄 第一章 獲取本地藍(lán)牙并掃描周圍藍(lán)牙信息并輸出 第二章 選取設(shè)備輸入配對碼并配對 第三章 配對后進(jìn)行藍(lán)牙通信 接著第二章,我們已經(jīng)配對完成,接下來就是通過winsock進(jìn)行通信了。 我又加了個SOCKET全局變量來保存套接字和WSADATA wsaData用于初始化套接字庫

    2024年02月08日
    瀏覽(23)
  • C++多線程編程(第三章 案例1,使用互斥鎖+ list模擬線程通信)

    C++多線程編程(第三章 案例1,使用互斥鎖+ list模擬線程通信)

    主線程和子線程進(jìn)行l(wèi)ist通信,要用到互斥鎖,避免同時操作 1、封裝線程基類XThread控制線程啟動和停止; 2、模擬消息服務(wù)器線程,接收字符串消息,并模擬處理; 3、通過Unique_lock和mutex互斥方位list 消息隊列 4、主線程定時發(fā)送消息給子線程; 代碼包含了XThread類(基類)、

    2024年02月15日
    瀏覽(20)
  • 南京郵電大學(xué)程序設(shè)計類教輔平臺c++第三章作業(yè)編程題答案

    南京郵電大學(xué)程序設(shè)計類教輔平臺c++第三章作業(yè)編程題答案 1.5.1構(gòu)建一個類,含有三個數(shù)據(jù)成員,分別表示立方體的三條邊長;含有構(gòu)造函數(shù)(默認(rèn)邊長為3,2,1)和一個用來計算立方體體積的成員函數(shù)Compute()。 main()函數(shù)如下,請復(fù)制使用 代碼: 2.設(shè)計一個Car類,它的數(shù)

    2023年04月20日
    瀏覽(39)
  • 曲線藝術(shù)編程 coding curves 第三章 弧,圓,橢圓(ARCS, CIRCLES, ELLIPSES)

    曲線藝術(shù)編程 coding curves 第三章 弧,圓,橢圓(ARCS, CIRCLES, ELLIPSES)

    原作:Keith Peters https://www.bit-101.com/blog/2022/11/coding-curves/ 譯者:池中物王二狗(sheldon) blog: http://cnblogs.com/willian/ 源碼:github: https://github.com/willian12345/coding-curves 曲線藝術(shù)編程系列第三章 這一篇中我們將關(guān)注如何繪制圓弧,圓和橢圓。(結(jié)束前再聊聊正切相關(guān)的) 很可能你使用

    2024年02月07日
    瀏覽(24)
  • 【數(shù)據(jù)庫系統(tǒng)概論】第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL

    【數(shù)據(jù)庫系統(tǒng)概論】第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL

    1.數(shù)據(jù)查詢: SELECT:用于選擇需要查詢的列和行。 FROM:用于指定要查詢的表。 WHERE:用于指定查詢條件。 GROUP BY:用于按照指定的列對結(jié)果進(jìn)行分組。 HAVING:用于指定分組條件。 ORDER BY:用于指定查詢結(jié)果的排序方式。 2.數(shù)據(jù)操縱: INSERT INTO:用于將數(shù)據(jù)插入表中。 UPDAT

    2024年02月08日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包