我想使用自定义类来很好地显示pandoc.tables(我正在使用pander),同时编织html或pdf。
由于这个SO question,我找到了一种在控制台中打印得很好的方法。
在此示例中,打印x返回6M 75M 743.5M 0.3M 4.3M:
print.million <- function(x, ...) {
x <- paste0(round(x / 1e6, 1), "M")
NextMethod(x, quote = FALSE, ...)
}
x <- c(6e+06, 75000400, 743450000, 340000, 4300000)
class(x) <- "million"
x
但是这种格式化随着pandoc.table而消失:显示原始的,未格式化的值。我也尝试过自定义格式(回答上面的SO问题):
format.million <- function(x,...)paste0(round(unclass(x) / 1e6, 1), "M")
as.data.frame.million <- base:::as.data.frame.factor
但没有成功。
有没有办法让这项工作?我对除了pander之外的解决方案持开放态度,但是kable似乎与我的R版本(R版本3.2.3)不兼容。
答案 0 :(得分:0)
#include "LinkedList.h"
#include <stddef.h>
void LinkedList::next()
{
if(current != NULL)
{
current = current->next;
}
}
void LinkedList::reset()
{
if(head != NULL)
{
current = head;
}
}
void LinkedList::append(int data)
{
Node* newNode = new Node();
newNode->setData(data);
newNode->setNext(NULL);
reset();
if(this->current == NULL)
{
this->head = newNode;
}
else
{
while(this->current->getNext() != NULL)
{
this->current = this->current->getNext();
}
this->current->setNext(newNode);
}
}
void LinkedList::removeNode(int data)
{
this->current = this->head;
if(this->current == NULL) return;
if(this->current->getNext() == NULL)
{
delete this->current;
this->head = NULL;
}
else
{
Node* previous;
do
{
if(this->current->getData() == data) break;
previous = this->current;
this->current = this->current->getNext();
} while(this->current != NULL);
previous->setNext(this->current->getNext());
delete this->current;
}
}
void LinkedList::removeLast()
{
this->current = this->head;
while(this->current->getNext() != NULL)
{
this->current = this->current->getNext();
}
delete this->current;
}
方法对print.million
没有影响,这是一种不同的S3方法 - 所以你必须在这里定义pander
,例如:
pander.million
但要在> x <- c(6e+06, 75000400, 743450000, 340000, 4300000)
> pander(x)
_6000000_, _75000400_, _743450000_, _340000_ and _4300000_
> pander.million <- function(x, ...) pander(paste0(round(x / 1e6, 1), "M"))
> class(x) <- 'million'
> pander(x)
_6M_, _75M_, _743.5M_, _0.3M_ and _4.3M_
的表格中使用此内容,我不确定如何为列设置pandoc.table
类。你能想出一个可重复的例子吗?
但是,例如,您可以预处理million
:
data.frame