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

私はここで何を間違っていますか?

4

1 に答える 1

4

引数にデフォルトを使用するsummarizeと、関数は 1 行に簡略化されます。

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  
于 2013-01-14T22:15:03.127 に答える