R 變數與工作空間

工作空間

在 R 的互動式環境下工作時,我們可以使用 ls 來列出目前已經被建立的變數名稱:

foo <- 3
bar <- "Hello World"
foo.bar <- 1:5
ls()
[1] "bar"     "foo"     "foo.bar"

lspattern 參數可以指定搜尋的關鍵字,篩選變數名稱:

ls(pattern = "foo")
[1] "foo"     "foo.bar"

在預設的狀況下,ls 不會顯示以句點(.)開頭的隱藏變數(這跟 UNIX/Linux 系統上的規則相同),如果想要連同隱藏的變數一起列出來,可以加上 all.names = TRUE 參數:

.hide.var <- 23
ls()
[1] "bar"     "foo"     "foo.bar"
ls(all.names = TRUE)
[1] ".hide.var" "bar"       "foo"       "foo.bar"

ls.str 是結合 lsstr 的一個函數,可以列出各個變數的名稱與內部結構:

ls.str()
bar :  chr "Hello World"
foo :  num 3
foo.bar :  int [1:5] 1 2 3 4 5

browseEnv 可以在瀏覽器中顯示目前工作空間中的變數:

browseEnv()
r-browseenv-list-objects-1

browseEnv

通常在 R 的環境下工作一段時間之後,會在工作空間中建立許多的變數,如果要刪除一些不再使用的變數,可以使用 rm 函數:

rm(bar, foo)

rm 可以配合 ls 將所有的變數一次刪除:

rm(list = ls())

補充資料

R 有四種區分變數類型的屬性,分別為類別(class)、類型(type)、模式(mode)與儲存模式(storage mode),大部分的狀況下我們只會使用到類別(class),遇到類別不敷使用時才會需要使用其他幾個屬性(例如區分陣列(array)的狀況),這時候就可以使用 is.numeric 這類的函數。

下表是 R 各種類型變數的類別(class)、類型(type)、模式(mode)與儲存模式(storage mode)的對應。

類別 類型 模式 儲存模式
Logical logical logical logical logical
Integer integer integer numeric integer
Floating Point numeric double numeric double
Complex complex complex complex complex
String character character character character
Raw Byte raw raw raw raw
Categorical factor integer numeric integer
Null NULL NULL NULL NULL
Logical Matrix matrix logical logical logical
Numeric Matrix matrix double numeric double
Character Matrix matrix character character character
Logical Array array logical logical logical
Numeric Array array double numeric double
Character Array array character character character
List list list list list
Data Frame data.frame list list list
Function function closure function function
Environment environment environment environment environment
Expression expression expression expression expression
Call call language call language
Formula formula language call language
R

6 留言

  1. derek

    你好,想问一下,因子变量那部分,sample计划是10000个,为什么下面写5000呢,很困惑,多谢

    • G. T. Wang

      抱歉,這是我筆誤寫錯了,目前文章已經更正,謝謝您。

      • derek

        太客气啦,还要感谢您的blog

  2. Annie

    你好, 我想請問
    就是我再開view的時候中文的部分都會是亂碼
    但使用fix的時候則不會,我是使用mac
    請問這問題有解決辦法嗎?

  3. 路人

    femail
    有錯字

    • G. T. Wang

      已修正,感謝告知。

Comments are Closed