2015-04-15 14 views
6

Sto riscontrando un problema in cui la funzione Stargazer sta interpretando i dati nel mio data.frame come un comando in lattice. Mi piacerebbe trovare un modo per sopprimere questa funzionalità di Stargazer. Vedi sotto.L'interpretazione da stargazer dei dati data.frame come codice in lattice costituisce un bug o è previsto?

z <- c("Bank of America Corp", 
    "Citigroup Inc", 
    "JPMorgan Chase & Co", 
     "Morgan Stanley", 
    "Wells Fargo & Co") 

s <- data.frame(z=z, l= c(100000, 25, 10000, 24, 100000)) 
library(stargazer) 
stargazer(s, type = "text", summary = FALSE) 
# prints out 
    ============================== 
       z    l 
    ------------------------------ 
     1 Bank of America Corp 100,000 
     2 Citigroup Inc  25 
     3 JPMorgan Chase  Co 
     4 Morgan Stanley  24 
     5  Wells Fargo  Co 
    ------------------------------ 

Qui la e commerciale sta provocando una nuova colonna a causa del suo significato in lattice. Ho confermato questo perché sostituire & con e causa la tabella per stampare correttamente.

z <- c("Bank of America Corp", 
    "Citigroup Inc", 
    "JPMorgan Chase and Co", 
     "Morgan Stanley", 
    "Wells Fargo and Co") 

s <- data.frame(z=z, l= c(100000, 25, 10000, 24, 100000)) 
library(stargazer) 
stargazer(s, type = "text", summary = FALSE) 
# prints out 

=============================== 
      z    l 
------------------------------- 
1 Bank of America Corp 100,000 
2  Citigroup Inc  25 
3 JPMorgan Chase and Co 10,000 
4 Morgan Stanley  24 
5 Wells Fargo and Co 100,000 
------------------------------- 

C'è qualche opzione che posso invocare nella funzione Stargazer per prevenire questo comportamento?

+1

quale versione di latex e stargazer stai usando? – Tarek

risposta

4

Non sembra esserci un'opzione per questo con l'attuale versione di stargazer. Se si controlla il codice sorgente si trova il seguente pezzo di codice (linea 4704):

############## TEXT AND html MODE ############## 


    .split.line <- # split line of a LaTeX table into constituent parts separated by & 
    function(s) { 
    # remove the "\\\\" 
    s <- gsub("\\\\", "", s, fixed=TRUE) 
    s <- paste(" ",s," ", sep="") 

    return(.trim(strsplit(s, " &", fixed=TRUE)[[1]])) 
    } 

Quindi, a quanto pare, questo sembra essere insita nel modo Stargazer è formattare l'output tavolo e non è catturato da qualsiasi opzione per il comando.

Se si vuole semplicemente formattare un frame di dati simile a quello che hai postato nel tuo esempio, vorrei utilizzare print.xtable() dal pacchetto xtable che ha una funzione di disinfettare che gestisce correttamente e commerciali nelle stringhe e produce sia corretto LaTeX e HTML outupt per il quadro dati di esempio suggerito.

+1

potresti anche provare 'Hmisc :: latex()'. –

+0

(+1) Grazie per la risposta ... Sono curioso anche se '.split.line' sembra ignorare' \\ & 'ma' stargazer' no. Ad esempio, 'z <- c (" JPMorgan Chase \\ & Co "," Wells Fargo & Co"); lapply (z, .split.line); s <- data.frame (z = z, l = c (100000, 25)); stargazer (s, type = "text", summary = F) '. Scusa probabilmente mi manca l'ovvio. – user20650

+0

ah .. ci sono anche altre funzioni che sostituiscono caratteri,' .replace.latex.symbols' e così via ... – user20650

Problemi correlati