2016-10-27 43 views
1

這樣做:爲什麼在函數中分配名稱時會發生這種情況?

x <- data.frame(a=1, b=2, c=3) 

func <- function(df) { 
    names(df) <- c("name1","name2","name3") 
} 

x<-func(x) 

打開x到名字

這樣的特徵向量:

x <- data.frame(a=1, b=2, c=3) 

func <- function(df) { 
    names(df) <- c("name1","name2","name3") 
    setDT(df) 
} 

x<-func(x) 

給出X回爲一個data.table。它也與as.data.frame(x)一樣。

爲什麼會發生這種情況?

回答

2

從函數返回的是最後一個評估表達式:c("name1","name2","name3")在第一個函數中,setDT(df)在第二個中。

要更新作爲參數傳遞的data.frame的名稱,更新後只返回:

x <- data.frame(a=1, b=2, c=3) 

func <- function(df) { 
    names(df) <- c("name1","name2","name3") 
    df # This line returns the data.frame 
} 

x<-func(x) 
相關問題