Erstellen Sie eine Tabelle mit griechischen Buchstaben und mehreren Spalten in RStudio für Latex

Erstellen Sie eine Tabelle mit griechischen Buchstaben und mehreren Spalten in RStudio für Latex

Mit den Befehlen:

---
output: pdf_document
---

```{r, results='asis',message=FALSE,warning=FALSE}
library(knitr)
library(xtable)

url <- 'https://cdn.rawgit.com/fsbmat/StackOverflow/master/'
dt1 <- read.table(paste0(url, 'sim50.txt'), header = TRUE)
attach(dt1)
dt2 <- read.table(paste0(url, 'sim200.txt'), header = TRUE)
attach(dt2)
dt3 <- read.table(paste0(url, 'sim1000.txt'), header = TRUE)
attach(dt3)

gamma0=1.23
gamma1=0.07
gamma2=1.05
#gamma3=0.7
beta0=1.18
beta1=0.23
beta2=0.25
phi1 <- 0.69
rho <- 0.03
truevalue <- c(gamma0,gamma1,gamma2,beta0,beta1,beta2,phi1,rho)

eqm=function(x,theta){ 
  N=length(x)
  sqrt(sum(((x-theta)^2))/N)}
m  <- dt1
m2 <- dt2
m3 <- dt3

eqmest=c(eqm(x=m[,1],theta=truevalue[1]),
         eqm(x=m[,2],theta=truevalue[2]),
         eqm(x=m[,3],theta=truevalue[3]),
         eqm(x=m[,4],theta=truevalue[4]),
         eqm(x=m[,5],theta=truevalue[5]),
         eqm(x=m[,6],theta=truevalue[6]),
         eqm(x=m[,7],theta=truevalue[7]),
         eqm(x=m[,8],theta=truevalue[8]))

eqmest2=c(eqm(x=m2[,1],theta=truevalue[1]),
          eqm(x=m2[,2],theta=truevalue[2]),
          eqm(x=m2[,3],theta=truevalue[3]),
          eqm(x=m2[,4],theta=truevalue[4]),
          eqm(x=m2[,5],theta=truevalue[5]),
          eqm(x=m2[,6],theta=truevalue[6]),
          eqm(x=m2[,7],theta=truevalue[7]),
          eqm(x=m2[,8],theta=truevalue[8]))

eqmest3=c(eqm(x=m3[,1],theta=truevalue[1]),
          eqm(x=m3[,2],theta=truevalue[2]),
          eqm(x=m3[,3],theta=truevalue[3]),
          eqm(x=m3[,4],theta=truevalue[4]),
          eqm(x=m3[,5],theta=truevalue[5]),
          eqm(x=m3[,6],theta=truevalue[6]),
          eqm(x=m3[,7],theta=truevalue[7]),
          eqm(x=m3[,8],theta=truevalue[8]))
parameter <- c("gamma0 (mu2)","gamma1 (mu2)", "gamma2 (mu2)", "beta0 (mu1)", "beta1 (mu1)",
               "beta2 (mu1)","phi1 (sd)","rho (cor)")
dt <- data.frame(Parameters=parameter,VV=truevalue,Mean=cbind(colMeans(dt1)),EQM=eqmest,
                Mean=cbind(colMeans(dt2)),EQM=eqmest2,Mean=cbind(colMeans(dt3)),
                EQM=eqmest3)
kable(dt, digits = 5, align = c('c','c','c','c','c','c','c','c'))

print(xtable(dt,digits=c(5,5,5,5,5,5,5,5,5), caption = "",align = rep("c",9)), 
      caption.placement = "top", include.rownames = FALSE, type = "latex")
```

Ich erstelle die folgende Tabelle in RStudio zur Verwendung in meiner Latex-Datei:

Bildbeschreibung hier eingeben

Ist es möglich, die folgende Tabelle mit griechischen Buchstaben und mehreren Spalten mit dem Befehl xtablein der Rstudio-Software zu generieren?

Bildbeschreibung hier eingeben

Wenn nicht, ist es möglich, dies einfacher zu generieren:

Bildbeschreibung hier eingeben

Antwort1

Nach der Hilfe von @nebi war es möglich, die Tabelle wie gewünscht zu vervollständigen. Einfach alle "NA" und "clear" manuell in Latex löschen.

---
output: pdf_document
---

```{r, results='asis',message=FALSE,warning=FALSE}
library(knitr)
library(xtable)

url <- 'https://cdn.rawgit.com/fsbmat/StackOverflow/master/'
dt1 <- read.table(paste0(url, 'sim50.txt'), header = TRUE)
attach(dt1)
dt2 <- read.table(paste0(url, 'sim200.txt'), header = TRUE)
attach(dt2)
dt3 <- read.table(paste0(url, 'sim1000.txt'), header = TRUE)
attach(dt3)

gamma0=1.23
gamma1=0.07
gamma2=1.05
#gamma3=0.7
beta0=1.18
beta1=0.23
beta2=0.25
phi1 <- 0.69
rho <- 0.03
truevalue <- c(gamma0,gamma1,gamma2,beta0,beta1,beta2,phi1,rho)

eqm=function(x,theta){ 
  N=length(x)
  sqrt(sum(((x-theta)^2))/N)}
m  <- dt1
m2 <- dt2
m3 <- dt3

eqmest=c(eqm(x=m[,1],theta=truevalue[1]),
         eqm(x=m[,2],theta=truevalue[2]),
         eqm(x=m[,3],theta=truevalue[3]),
         eqm(x=m[,4],theta=truevalue[4]),
         eqm(x=m[,5],theta=truevalue[5]),
         eqm(x=m[,6],theta=truevalue[6]),
         eqm(x=m[,7],theta=truevalue[7]),
         eqm(x=m[,8],theta=truevalue[8]))

eqmest2=c(eqm(x=m2[,1],theta=truevalue[1]),
          eqm(x=m2[,2],theta=truevalue[2]),
          eqm(x=m2[,3],theta=truevalue[3]),
          eqm(x=m2[,4],theta=truevalue[4]),
          eqm(x=m2[,5],theta=truevalue[5]),
          eqm(x=m2[,6],theta=truevalue[6]),
          eqm(x=m2[,7],theta=truevalue[7]),
          eqm(x=m2[,8],theta=truevalue[8]))

eqmest3=c(eqm(x=m3[,1],theta=truevalue[1]),
          eqm(x=m3[,2],theta=truevalue[2]),
          eqm(x=m3[,3],theta=truevalue[3]),
          eqm(x=m3[,4],theta=truevalue[4]),
          eqm(x=m3[,5],theta=truevalue[5]),
          eqm(x=m3[,6],theta=truevalue[6]),
          eqm(x=m3[,7],theta=truevalue[7]),
          eqm(x=m3[,8],theta=truevalue[8]))
parameter <- c("$\\gamma_{1}$","$\\gamma_{2}$", "$\\gamma_{3}$", "$\\beta_{1}$", "$\\beta_{2}$","$\\beta_{3}$","$\\phi$","$\\rho$")
dt <- data.frame(Parâmetros=parameter,VV=truevalue,Clear=rep("NA",8),Média=cbind(colMeans(dt1)),EQM=eqmest,Clear=rep("NA",8),Média=cbind(colMeans(dt2)),EQM=eqmest2,Clear=rep("NA",8),Média=cbind(colMeans(dt3)),EQM=eqmest3)

print(xtable(dt,digits=c(5,5,5,5,5,5,5,5,5,5,5,5), caption = " ",align = rep("c",12)), 
      caption.placement = "top", include.rownames = FALSE,include.colnames = FALSE,
      type = "latex", 
      sanitize.text.function = function(x) {x},add.to.row = list(
        pos = list(0),
        command = c(
          "&         &&\\multicolumn{2}{c}{n=50}&&\\multicolumn{2}{c}{n=200}&&\\multicolumn{2}{c}{n=1000} \\\\
          \\cline{4-5} \\cline{7-8} \\cline{10-11}
          Parâmetros & VV & Clear & Média & EQM& Clear & Média & EQM& Clear & Média & EQM\\\\"
)))

Bildbeschreibung hier eingeben

Antwort2

In der Funktionprint.xtablegibt es verschiedene sanitizeFunktionen, um Markup in die Tabelle einzufügen. Sie können sich den Teil ansehen4.1 Markup in der TabelleimDie xtable GalerieVignette ( vignette("xtableGallery"))

Für Ihren Code haben SieErsteum den Latex-Befehl zu umgehen (Ihr parameter variable(dh $\\gamma 0 (\\mu 2)$) undzweitedann bereinigen Sie Ihren print.xtable-Aufruf mit dem Argumentsanitize.text.function = function(x) {x}

Vergessen Sie für Ihr Beispiel nicht, die verwendete Datei zu erläutern und die Pakete und Bibliotheken aufzurufen, um es reproduzierbar zu machen.

Als .Rmd-Datei gibt diessinngemäß

---
output: pdf_document
---

```{r, results='asis'}
library(knitr)
library(xtable)

url <- 'https://cdn.rawgit.com/fsbmat/StackOverflow/master/'
dt1 <- read.table(paste0(url, 'sim50.txt'), header = TRUE)
attach(dt1)
dt2 <- read.table(paste0(url, 'sim200.txt'), header = TRUE)
attach(dt2)
dt3 <- read.table(paste0(url, 'sim1000.txt'), header = TRUE)
attach(dt3)

gamma0=1.23
gamma1=0.07
gamma2=1.05
#gamma3=0.7
beta0=1.18
beta1=0.23
beta2=0.25
phi1 <- 0.69
rho <- 0.03
truevalue <- c(gamma0,gamma1,gamma2,beta0,beta1,beta2,phi1,rho)

eqm=function(x,theta){ 
  N=length(x)
  sqrt(sum(((x-theta)^2))/N)}
m  <- dt1
m2 <- dt2
m3 <- dt3

eqmest=c(eqm(x=m[,1],theta=truevalue[1]),
         eqm(x=m[,2],theta=truevalue[2]),
         eqm(x=m[,3],theta=truevalue[3]),
         eqm(x=m[,4],theta=truevalue[4]),
         eqm(x=m[,5],theta=truevalue[5]),
         eqm(x=m[,6],theta=truevalue[6]),
         eqm(x=m[,7],theta=truevalue[7]),
         eqm(x=m[,8],theta=truevalue[8]))

eqmest2=c(eqm(x=m2[,1],theta=truevalue[1]),
          eqm(x=m2[,2],theta=truevalue[2]),
          eqm(x=m2[,3],theta=truevalue[3]),
          eqm(x=m2[,4],theta=truevalue[4]),
          eqm(x=m2[,5],theta=truevalue[5]),
          eqm(x=m2[,6],theta=truevalue[6]),
          eqm(x=m2[,7],theta=truevalue[7]),
          eqm(x=m2[,8],theta=truevalue[8]))

eqmest3=c(eqm(x=m3[,1],theta=truevalue[1]),
          eqm(x=m3[,2],theta=truevalue[2]),
          eqm(x=m3[,3],theta=truevalue[3]),
          eqm(x=m3[,4],theta=truevalue[4]),
          eqm(x=m3[,5],theta=truevalue[5]),
          eqm(x=m3[,6],theta=truevalue[6]),
          eqm(x=m3[,7],theta=truevalue[7]),
          eqm(x=m3[,8],theta=truevalue[8]))
parameter <- c("$\\gamma 0 (\\mu 2)$","$\\gamma 1 (\\mu 2)$", "$\\gamma 2 (\\mu 2)$", "$\\beta 0 (\\mu 1)$", "$\\beta 1 (\\mu 1)$","$\\beta 2 (\\mu 1)$","$\\phi 1 (sd)$","$\\rho (cor)$")
dt <- data.frame(Parameters=parameter,VV=truevalue,Mean=cbind(colMeans(dt1)),EQM=eqmest,Mean=cbind(colMeans(dt2)),EQM=eqmest2,Mean=cbind(colMeans(dt3)),EQM=eqmest3)

print(xtable(dt,digits=c(5,5,5,5,5,5,5,5,5), caption = "",align = rep("c",9)), 
      caption.placement = "top", include.rownames = FALSE, type = "latex", 
      sanitize.text.function = function(x) {x})
```

Ausgabe

verwandte Informationen