1. 程式人生 > >R語言學習筆記——批量生成、呼叫含引數變數

R語言學習筆記——批量生成、呼叫含引數變數

批量生成、呼叫含引數變數

使用get()、assign()和paste()函式實現

函式分析

get()

get(x, pos = -1, envir = as.environment(pos), mode = “any”, inherits = TRUE) 返回對應變數的值。 當輸入的變數是不存在時,會報錯。需要注意的是變數名稱需要使用引號。

> get(a)
Error in get(a) : object 'a' not found
> a=1
> get(a)
Error in get(a) : invalid first argument
> get('a')
[1] 1

assign()

assign(x, value, pos = -1, envir = as.environment(pos), inherits = FALSE, immediate = TRUE) 將value賦值給x 和get()相同,需要對操作的變數使用引號。assign()函式賦值的物件不存在時,將自動建立該物件,當value指向一個不存在的變數時,同樣會報錯。

> a=1
> assign(x,a)
Error in assign(x, a) : object 'x' not found
> assign('x',a)
> x
[1] 1
> assign('x',b)
Error in assign("x", b) : object 'b' not found

paste()

paste (…, sep = " ", collapse = NULL) paste0(…, collapse = NULL) 將輸入的內容連線成一個新的物件,預設的連線符是一個空格。

> paste('a','b')
[1] "a b"
> paste('a','b','ccc')
[1] "a b ccc"
> paste('a','b',sep = "")
[1] "ab"
> paste('a','b',sep = "@")
[1] "[email protected]"

生成

##生成10個變數,名字分別為data1、data2......data10,並賦值1
##注意:for迴圈的迴圈體超過一句時需要用{}括起來
for (i in 1:10)
    assign(paste("data",i,sep=""),1)

呼叫

##迴圈呼叫data1-data10,其中“......”為呼叫後需要實現的內容
for (j in 1:10){
    get(paste("data",j,sep=""))
    ......
    }