用=還是<-?傻傻分不清
R語言賦值可以用或,一般都建議使用,那你知道這兩個之間的區間嗎?那你有沒有見過和這種賦值方法嗎?今天就來和大家聊聊這基本的賦值符號都有哪些區別。
首先我們來看看符號的優先順序,和java,c這些編程語言的優先順序類似。下面這些都取自R幫助文檔,輸入即可查看,它是根據優先順序從高到低排列的。
我們可以看到的優先順序比高,這一點我們在使用時一定要注意到。
現在來舉幾個簡單例子看看。
現在來看另外一個例子。
那這又是為什麼不報錯了呢?那是因為括弧的優先順序更高,它相當於先給x賦值,再傳入到median,與下面例子等價。
為什麼此時輸入x並沒有報錯而前面卻報錯?因為在這種情況下,x被定義在用戶的當前工作空間,所以在這個使用median之後x還是存在的。
總結一下:
這說明使用這兩種方法賦值的變數是存在不同的空間或作用域。= 賦值對象存在所在的空間,而
看起來有點晦澀,現在來仔細說說這兩個的區別:
(1)所在的空間,比如median(x =1:10),x的值僅存在median函數內部空間,在median函數外面訪問不到x,所以前面程序中報錯:。
(2)整個空間,比如median(x
如果我們定義一個函數,函數中變數用
當然是不能的,因為x定義在test函數內部,僅存在test函數的空間裡面,所以在該函數外面根本訪問不到x。如果想訪問到x,除了returen,也不是沒有其他辦法的。
現在來看看另外一種賦值方法,估計很少人見過,了解之後有助於我們理解賦值過程。
簡單了解之後,來做幾個測試。
一般情況下,將=和
這裡主要是因為優先順序的問題,
為了說明什麼時候用這兩種賦值方法,先隨便看一個函數,比如scan函數,我們可以發現傳遞參數用的都是=,因此傳參數基本都是用=而不是
在R文檔中有下面介紹():文檔中介紹說
我覺得
TAG:跟著菜鳥一起學R語言 |