[英]Using only part of a function in R
有沒有辦法在 R 中只使用 function 的一部分? 例如:
My.function <- function(x)
{
m = mean(x)
q.1 = quantile(x, 1/4)
q.3 = quantile(x, 3/4)
rbind(m, q.1, q.3)
}
出於任何原因,我只想使用q.1和q.3而不是m 。 可能嗎? 如果是,那怎么辦?
謝謝
您可以在 function 的主體中使用 if 語句,並在 function 參數中添加布爾值。 然后 function 不會評估 if 語句是錯誤的。 對於你的情況,它會是這樣的
My.function <- function(x,getmean = F)
{
q.1 = quantile(x, 1/4)
q.3 = quantile(x, 3/4)
if (getmean) {
m = mean(x)
return(rbind(m, q.1, q.3))
} else {
return(rbind(q.1,q.3))
}
}
#test
My.function(rnorm(100))
My.function(rnorm(100), getmean = T)
你為什么要打擾? 如果您不想在 output 中使用m
,只需編寫
foo <- My.function(x)[2:3,]
注意:如果您正在處理包含三個非常耗時的子功能的 function,那么執行類似於“加倍”答案的操作是有意義的。 我建議充分的靈活性:
My.function <- function(x, dolist=c(1,1,1) )
{
result <-vector('list') # to handle any sorts of results
if(dolist[1]) { result[[1]] <- first.function(x) }
if(dolist[2]) {result[[2]] <- second.function(x) }
if(dolist[3]) {result[[3]] <- third.function(x) }
return(result)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.