R:data.frame中的数学符号

时间:2017-09-19 16:15:38

标签: r dataframe

> 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中编写数学符号,但似乎两者不兼容。有办法解决这个问题吗?

我也试过

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

如何让enter image description here出现?

3 个答案:

答案 0 :(得分:1)

如果您想在数据框内存储这些符号的乳胶代码,那么可以从xtable生成正确的乳胶代码,您需要通过输入来覆盖print.xtable中的清理功能虚函数,准确返回输入(参见这个问题:Using xtable with R and Latex, math mode in column names?):

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})

乳胶表:

\begin{table}[ht]
\centering
\begin{tabular}{rrrr}
  \hline
 & $\beta_{0}$ & $\beta_{1}$ & $\beta_{2}$ \\ 
  \hline
Estimate & 0.05 & 0.10 & 0.15 \\ 
   \hline
\end{tabular}
\end{table}

xtable类似,stargazer有一些很酷的选项可以在latex中生成漂亮的表格。您可以做的一件事是使用covariate.labels中的stargazer参数将变量名称更改为数学符号:

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)

输出乳胶表代码:

\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} 

您可以复制并粘贴代码here以呈现乳胶表。

enter image description here

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

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
# --------------------------

答案 1 :(得分:1)

使用我的包裹的另一个选择:

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

答案 2 :(得分:-3)

我不太确定你在这里想做什么。如果您尝试使用名为&#34;参数&#34;的列创建数据框df。使用从列表beta中的向量获取的值,然后下面的代码将完成工作。

df = data.frame(Parameters = beta[[1]]) 
# Assuming that the first object in beta is a vector that you want to set as "Paramters" column.

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