當前位置:成語大全網 - 漢語詞典 - 英語課結束了嗎?在R語言代碼中有什麽含義嗎?

英語課結束了嗎?在R語言代碼中有什麽含義嗎?

作者:任坤

鏈接:/question/24908785/answer/29404778

來源:知乎。

版權歸作者所有。商業轉載請聯系作者授權,非商業轉載請註明出處。

的。R中的symbol只是壹個普通的字符,可以出現在符號名中。它在以下情況下具有特殊的含義:

1.以開始的變量。在環境中默認被視為隱藏變量,除非ls.str(all.names = TRUE)否則不會與ls.str()壹起列出。

2.有些函數有特殊的意義,如。線性模型函數lm()的公式參數中的符號會被特殊解釋,比如lm(mpg ~)中的mpg ~等。,data = mtcars)。這個公式將被lm()解釋為將mpg作為mtcars數據表中的解釋變量。其他列是解釋變量的線性回歸模型,在變量較多的情況下可以簡化代碼,但風險是回歸方程隨著數據列的變化而變化,類似於在SQL中使用select *的風險。

3.不同的功能可能會使。有不同的含義,如。在dplyr::do()函數中引用每個數據行,而magrittr::` % & gt;% `右邊函數參數中出現的是指符號左邊的對象,pipeR::` % & gt;& gt的。在右邊的表達式中引用符號左邊的對象,而。在rlist::list.map()函數的expr參數中,它被解釋為壹個隱式lambda表達式,指示列表中需要映射的每個元素。

4.(謝謝

@王雨辰

符號是專門用來實現R中相對簡單的面向對象系統S3的方法調度的,也就是壹個方法xyz可以用UseMethod()來定義,所以xyz.class是指類類型的xyz方法的實現。這個S3面向對象的系統簡單且容易混淆。比如head.data.frame,其實就是head對data.frame類型的實現,但是也可以先定義head.data方法,然後再定義壹個frame類型,這樣代碼就會出現混亂。

簡而言之。符號只是壹般變量中常見的符號,只是有些函數用。為書寫或引用提供特殊用法,或者在S3系統中用作分隔方法和類的字符。

= = =補充1 ===

在r中訪問壹個對象中的元素有很多種方法,壹種是取壹個subsetting use [],比如list(a=1,b=2) ["a"]得到壹個list(a=1),這個list是為list、vector等對象定義的,而不是為環境定義的。還有壹個提取,通過[[]],list (a = 1,b = 2) ["a"]]得到1的元素值。在這種情況下,元素也可以通過$提取,這是為環境定義的,而不是為vector定義的。此外,還有S4對象,您需要使用@符號來訪問該槽。背後對應的函數是slot()函數,但這些都不是死的。對於自己定義的對象,總是可以實現“[”、“[”、“$”等方法來定義如何計算。妳可以參考美元。我的renkun-ken/PipeR @ GitHub擴展包(Piper/Piper)中管道對象的pipe()。r at master renkun-ken/Piper github),並且可以動態生成閉包,實現類似jQuery或C# LINQ的基於對象的流水線操作。