R:data.frame中的数学表示法

R:data.frame中的数学表示法,r,dataframe,R,Dataframe,我试图在data.frame中编写数学符号,但似乎两者不兼容。有办法解决这个问题吗 我也试过了 > df = data.frame(Parameters = c(expression(beta[1]))) Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""expression"" to a data.frame 我怎样才能出现?我不太清楚你在这里想做什么。如果您试图使用名为

我试图在data.frame中编写数学符号,但似乎两者不兼容。有办法解决这个问题吗

我也试过了

> df = data.frame(Parameters = c(expression(beta[1])))
Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class ""expression"" to a data.frame

我怎样才能出现?

我不太清楚你在这里想做什么。如果您试图使用名为Parameter的列创建一个dataframe df,该列的值取自beta列表中的向量,那么下面的代码将完成此工作

> data.frame(Parameters = paste(expression(beta[1])))
  Parameters
1    beta[1]

如果这些对象不是您要查找的对象,请提供有关这些对象的更多信息。

如果您希望将这些符号的latex代码存储在数据帧中,则可以从xtable生成正确的latex代码,您需要在print.xtable中通过输入一个返回输入的伪函数来覆盖sanitize函数。请参见以下问题:

乳胶表:

df = data.frame(Parameter = c("$\\beta_{0}$", "$\\beta_{1}$", "$\\beta_{2}$"),
                Estimate = beta, row.names = 1)

print(xtable(t(df)), sanitize.text.function = function(x){x})
与xtable类似,stargazer有一些很酷的选项,可以用latex生成好看的表格。您可以做的一件事是使用stargazer中的covariate.labels参数将变量名更改为数学表示法:

这将输出一个latex表代码:

library(stargazer)

beta = 1:3*0.05
df = data.frame(Parameter = c("beta0", "beta1", "beta2"),
                Estimate = beta, row.names = 1)

stargazer(t(df), covariate.labels = c(NA, "$\\beta_{0}$", "$\\beta_{1}$", "$\\beta_{2}$"),
          header = FALSE, summary = FALSE)
可以复制并粘贴代码以呈现latex表

还请注意,stargazer中type=的默认值是latex,它生成latex代码,但您也可以指定type=text以在控制台中生成表。但是,此选项不允许渲染数学符号

\begin{table}[!htbp] \centering 
  \caption{} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}} cccc} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
 & $\beta_{0}$ & $\beta_{1}$ & $\beta_{2}$ \\ 
\hline \\[-1.8ex] 
Estimate & $0.050$ & $0.100$ & $0.150$ \\ 
\hline \\[-1.8ex] 
\end{tabular} 
\end{table} 

使用我的软件包的另一个选项:

stargazer(t(df), covariate.labels = c(NA, "$\\beta_{0}$", "$\\beta_{1}$", "$\\beta_{2}$"),
          header = FALSE, summary = FALSE, type = "text")

# ==========================
#              0     1     2  
# --------------------------
# Estimate 0.050 0.100 0.150
# --------------------------

你为什么要这么做?您的实际目标是什么?您可以将字符串存储在数据帧中,或者您可以在测试版中使用Unicode。对于实际的LaTex,也许可以使用RMarkdown和LaTex在文档中插入数据框,并使用所需的符号。我不认为您可以在R控制台中直接在数据帧的列中显示LaTex。也许您想要的是这样的东西:扩展@John Coleman使用unicode的建议,提供了如何在R中使用数据帧的示例。
\begin{table}[!htbp] \centering 
  \caption{} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}} cccc} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
 & $\beta_{0}$ & $\beta_{1}$ & $\beta_{2}$ \\ 
\hline \\[-1.8ex] 
Estimate & $0.050$ & $0.100$ & $0.150$ \\ 
\hline \\[-1.8ex] 
\end{tabular} 
\end{table} 
stargazer(t(df), covariate.labels = c(NA, "$\\beta_{0}$", "$\\beta_{1}$", "$\\beta_{2}$"),
          header = FALSE, summary = FALSE, type = "text")

# ==========================
#              0     1     2  
# --------------------------
# Estimate 0.050 0.100 0.150
# --------------------------
library(huxtable)
dfr = data.frame(Parameter = c("$\\beta_{0}$", "$\\beta_{1}$", "$\\beta_{2}$"),
      Estimate = 'beta')
ht <- as_hux(dfr)
escape_contents(ht) <- FALSE
ht # will print as TeX within a markdown pdf_document