Общая функция pander игнорирует аргументы

Если я не ошибаюсь, есть два способа создать таблицы уценки с пакетом pander: либо использовать функцию pandoc.table(), либо общую функцию pander(). Однако с функцией pander() кажется, что вы не можете использовать аргументы из pandoc.table()

Например :

library(pander)
data(iris)
pandoc.table(summary(iris), split.table="Inf")
pander(summary(iris), split.table="Inf")

С pandoc.table таблица не разделяется из-за аргумента split.table (это предполагаемое поведение). Но с pander аргумент игнорируется.
Я вижу в коде функции, что аргумент ... присутствует в pander.data.frame, но не переопределяется внутри него. :

> pander:::pander.data.frame
function (x, caption = attr(x, "caption"), ...)
{
    if (is.null(caption) & !is.null(storage$caption))
        caption <- get.caption()
    pandoc.table(x, caption = caption)
}

Почему бы не повторно использовать аргумент ... внутри функции, чтобы разрешить передачу аргументов из pander в pandoc.table (как показано ниже)? Может быть, на это есть веская причина...

function (x, caption = attr(x, "caption"), ...)
{
    if (is.null(caption) & !is.null(storage$caption))
        caption <- get.caption()
    pandoc.table(x, caption = caption,...)
}

person Gilles    schedule 10.06.2013    source источник


Ответы (1)


Хотя обработка pandoc.table аргументов с помощью метода pander является разумной идеей (и я определенно разрешаю это решение в следующем выпуске, спасибо за вопрос!), это также можно решить более глобально с помощью общего pander options. Например.:

> library(pander)
> data(iris)
> panderOptions('table.split.table', 'Inf')
> pander(head(iris))

-------------------------------------------------------------------
 Sepal.Length   Sepal.Width   Petal.Length   Petal.Width   Species 
-------------- ------------- -------------- ------------- ---------
     5.1            3.5           1.4            0.2       setosa  

     4.9             3            1.4            0.2       setosa  

     4.7            3.2           1.3            0.2       setosa  

     4.6            3.1           1.5            0.2       setosa  

      5             3.6           1.4            0.2       setosa  

     5.4            3.9           1.7            0.4       setosa  
-------------------------------------------------------------------

Обновление [11/06/2013]: недавняя фиксация решил эту проблему, и теперь вы можете передать эти дополнительные параметры в pandoc.table с помощью метода pander S3:

> pander(summary(iris), split.table="Inf")

------------------------------------------------------------------------------
&nbsp;  Sepal.Length   Sepal.Width   Petal.Length   Petal.Width     Species   
------ -------------- ------------- -------------- ------------- -------------
 ****   Min.  :4.300  Min.  :2.000   Min.  :1.000  Min.  :0.100   setosa :50  

 ****  1st Qu.:5.100  1st Qu.:2.800 1st Qu.:1.600  1st Qu.:0.300 versicolor:50

 ****  Median :5.800  Median :3.000 Median :4.350  Median :1.300 virginica :50

 ****   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               
------------------------------------------------------------------------------
person daroczig    schedule 10.06.2013
comment
Отлично, если вы можете добавить его, и спасибо за разработку pander! Я использую panderOptions, но я указываю его один раз в начале документа, и я хотел бы время от времени менять параметры, поэтому на данный момент вместо этого я использую pandoc.table. - person Gilles; 11.06.2013
comment
Спасибо @Gilles за добрые слова и, пожалуйста, посмотрите мой обновленный ответ. - person daroczig; 12.06.2013