1
我在R中編寫了一個函數,它返回一個由兩個變量組成的列表。該函數正確工作,返回正確的值。但是,問題是,我不能再訪問列表進行進一步處理。代碼是這樣的:返回並訪問R中函數的對象
grinder <- function(x) {
if(x == "BID") {
miles <- 18.4 * n.row
tolls <- 1.8 * n.row
} else if(x == "SPR") {
miles <- 10.8 * n.row
tolls <- 0
} else if (x == "BRI") {
miles <- 3.8 * n.row
tolls <- 0
} else if (x == "GOO") {
miles <- 66.2 * n.row
tolls <- 1.8 * n.row
} else if (x == "MIL") {
miles <- 108
tolls <- 0
} else if (x == "SMH") {
miles <- 94.6 * n.row
tolls <- 2 * n.row
}
mil.tol <- list(miles,tolls)
return(mil.tol)
}
grinder(x)
返回正確的值,但是我不能然後訪問mil.tol對這些值做任何事情。我也不能爲英里或通行費獲得正確的值。控制檯返回這個:
> mil.tol
Error: object 'mil.tol' not found
> miles
有什麼建議嗎?
mil.tol < - grinder(x)然後訪問它 – grubjesic
你應該期望'grinder'像任何正常的R函數一樣工作。這意味着它不僅爲您創建對象,而且還將結果分配給對象。如果你運行線性模型'lm(mpg〜wt,data = mtcars)',那麼這將是**糟糕的**如果在你的工作空間中創建了一個名爲「model」的對象 - 你無法使用多個模型一次。就像你習慣命名和分配你的模型'mod1 < - lm(...)'一樣,你需要命名和分配函數的輸出:'mil.tol < - grinder(x)' – Gregor