改變大小寫

如果要改變字串中英文字母的大小寫,可以運用 touppertolower 函數:

toupper("Foo Bar")
[1] "FOO BAR"
tolower("Foo Bar")
[1] "foo bar"

子字串

若要從字串中取出一部分的子字串,可以使用 substrsubstring 函數,這兩個函數的用法幾乎都相同,第一個參數是輸入的字串,第二與第三個參數則是子字串的開始與結束位置:

substr("abcdef", 2, 4)
[1] "bcd"
substring("abcdef", 2, 4)
[1] "bcd"

substrsubstring 只有在處理向量時會有一些小差異:

x.strings <- c(
  "abcdefghij",
  "ABCDEFGHIJ",
  "1234567890"
)
substr(x.strings, 1:4, 8)
[1] "abcdefgh" "BCDEFGH"  "345678"
substring(x.strings, 1:4, 8)
[1] "abcdefgh" "BCDEFGH"  "345678"   "defgh"

分割字串

若要將一個字串分割成多個字串,可以使用 strsplit 函數,第一個參數是輸入的字串,而第二個參數則是分隔字串:

strsplit("foo,bar,Foo,BAR", ",")
[[1]]
[1] "foo" "bar" "Foo" "BAR"

strsplit 函數預設會使用正規表示法(regular expression)來匹配分隔字串,如果要將指定的分隔字串視為一般的文字,可以加上 fixed = TRUE 參數。

strsplit("foo+bar+Foo+BAR", "+", fixed = TRUE)
[[1]]
[1] "foo" "bar" "Foo" "BAR"

strsplit 函數的輸出是一個列表(list),這樣設計的原因在於處理向量時,每一個結果的長度可能會不同:

x.str <- c("foo bar Foo BAR", "abc def")
strsplit(x.str, " ", fixed = TRUE)
[[1]]
[1] "foo" "bar" "Foo" "BAR"

[[2]]
[1] "abc" "def"

這是一個使用正規表示法的例子,使用逗號、句點或空白作為分隔字元:

strsplit("foo,bar.Foo BAR", "[,. ]")
[[1]]
[1] "foo" "bar" "Foo" "BAR"

檔案路徑

在 R 中我們可以藉由 getwd 函數取得目前的工作目錄,在存取檔案時若沒有特別指定路徑的話,就會以這個路徑為準。

getwd()
[1] "d:/workspace"

我們可以使用 setwd 函數來更改工作目錄:

setwd("c:/mypath")
getwd()
[1] "c:/mypath"

這裡我們使用正斜線(/)來區隔路徑,而如果要使用 Windows 慣用的反斜線也可以,只是在輸入反斜線時,要使用跳脫字元:

setwd("c:\\mypath")

另外我們也可以使用 file.path 函數來從各個目錄名稱來建立完整的路徑:

file.path("c:", "Program Files", "R")
[1] "c:/Program Files/R"

R.home 可以顯示 R 的安裝路徑:

R.home()
[1] "C:/PROGRA~1/R/R-32~1.4"

basename 可以從一串完整路徑中取出不包含路徑的檔案名稱:

basename("C:/Users/GTWang/Documents")
[1] "Documents"