2013-01-14 177 views
0

我有一個看起來像這樣的數據:函數缺少參數

> x 

Date  Obs 
1/1/2012  4 
1/2/2012  40 
1/3/2012  50 

而且這樣的功能:

myDat <- function(x, summarize) 
{ 
    if (summarize == T) 
    { 
    print(summary(x)) 
    } 

    if (missing(summarize) | summarize == F) 
    { 
    print(x) 
    } 
} 

,當我嘗試運行它爲:

myDat(x) 

我得到這個錯誤:

Error in summarize == T : 'summarize' is missing 

我在這裏做什麼錯了?

+1

你需要寫'如果(失蹤(總結)總結==! TRUE)...' – Andrie

+1

或者,將'...,summarize = TRUE'設置爲默認值。 – Andrie

+0

@Andrie,我需要默認彙總== F,如果myDat(x)沒有彙總參數運行,我應該只打印我的數據幀x。我只是嘗試過!(錯過(總結),仍然得到那個錯誤。 – user1471980

回答

4

使用默認設置您的summarize論點和你的函數簡化爲一條線:

myDat <- function(x, summarize=FALSE) { if (summarize) summary(x) else x} 

試試:

head(myDat(iris)) 
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
1   5.1   3.5   1.4   0.2 setosa 
2   4.9   3.0   1.4   0.2 setosa 
3   4.7   3.2   1.3   0.2 setosa 
4   4.6   3.1   1.5   0.2 setosa 
5   5.0   3.6   1.4   0.2 setosa 
6   5.4   3.9   1.7   0.4 setosa 


myDat(iris, s=TRUE) 
    Sepal.Length Sepal.Width  Petal.Length Petal.Width 
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 
Median :5.800 Median :3.000 Median :4.350 Median :1.300 
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 
     Species 
setosa :50 
versicolor:50 
virginica :50