簡體   English   中英

xtable-data.frame中的數字,還包含字符串

[英]xtable - digits in data.frame that also contains strings

我有一個包含數字和字符串的data.frame,我想控制xtable打印中的數字。 由於某種原因,xtable似乎忽略了digits=2命令。 看到:

\documentclass{article}
\begin{document}

<<echo=F, results='asis'>>=
library("xtable")
df <- data.frame(matrix( c("aaa", "bbb", seq(0.1, 1, length.out=6) ), 2, 4) )

print(xtable(df, digits=2))
print(xtable(df, digits=c(0, 0, 2, 2, 2)))
@
\end{document}

兩次打印都不會影響輸出中的位數,即兩個逗號后面的零都應為零,例如0.1和1。我希望它分別為0.10和1.00,以便所有數字具有相同的長度。

盡管當data.frame中沒有字符串時, digits=2命令仍然可以完美地工作。 看到:

df2 <- data.frame(matrix( seq(0.1, 1, length.out=6), 2, 3) )
print(xtable(df2, digits=2))

我正在尋找的是一種在xtable中打印data.frame的方法,該方法的確包含所有數字均為2的數字的字符串。

有人知道解決方案嗎?

在您的示例中,您是從一個字符矩陣創建數據框架的,該字符矩陣的每一列都是一個字符。 Xtable不知道如何將數字應用於字符。 嘗試從一開始就將data.frame定義為data.frame,然后數字列將是數字,字符列將是character。 這應該工作:

df <- data.frame(X1 = c("aaa", "bbb"),X2 = c(0.1,0.28),X3 = c(0.46,0.64), X4 = c(0.82, 1))
print(xtable(df, digits=2)) 

根據要求,一種將全字符數據幀轉換為字符列和數字列混合的快速方法:

df[] <- lapply(df, function(x) if (anyNA(y <- as.numeric(x))) x else y)

還有另一個在data.table包中更優雅的解決方案:

library(data.table)
setDT(df)[, lapply(.SD, function(x) if(anyNA(y <- as.numeric(x))) x else y)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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