使用列表的原因
對於普通 R 使用者,列表結構可能看起來是要操作的更復雜的資料結構之一。無法保證其中的所有元素屬於同一型別; 列表將有多複雜/不復雜的保證結構(列表中的元素可以是列表)
但是,使用列表來使用它在函式之間傳遞引數的主要原因之一。
# Function example which returns a single element numeric vector
exampleFunction1 <- function(num1, num2){
result <- num1 + num2
return(result)
}
# Using example function 1
exampleFunction1(1, 2)
# Function example which returns a simple numeric vector
exampleFunction2 <- function(num1, num2, multiplier){
tempResult1 <- num1 + num2
tempResult2 <- tempResult1 * multiplier
result <- c(tempResult1, tempResult2)
return(result)
}
# Using example function 2
exampleFunction2(1, 2, 4)
在上面的例子中,返回的結果只是簡單的數字向量。沒有問題可以通過這些簡單的向量。
此時需要注意的是,通常,R 函式一次只返回 1 個結果(你可以使用 if 條件返回不同的結果)。但是,如果你打算建立一個函式,該函式接受一組引數並返回幾種型別的結果,如數值向量(設定值)和資料框(來自計算),則需要將所有這些結果轉儲到列表中在回來之前。
# We will be using mtcars dataset here
# Function which returns a result that is supposed to contain multiple type of results
# This can be solved by putting the results into a list
exampleFunction3 <- function(dataframe, removeColumn, sumColumn){
resultDataFrame <- dataframe[, -removeColumn]
resultSum <- sum(dataframe[, sumColumn])
resultList <- list(resultDataFrame, resultSum)
return(resultList)
}
# Using example function 3
exampleResult <- exampleFunction3(mtcars, 2, 4)
exampleResult[[1]]
exampleResult[[2]]