簡體   English   中英

在 R 中僅使用 function 的一部分

[英]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.1q.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM