我在R中的stargazer输出有问题
这是我的原始数据帧:
Rank p LMax 10% 5% 1%
var1 0.427 24.25 21.8 27.4 31.5
var2 0.228 7.23 11.5 12.2 16.7
观星者创造了什么:
stargazer(data_summary,summary = FALSE,digits = 3)
Rank p LMax 10% 5% 1%
var1 0.427 24.250 21.800 27.400 31.500
var2 0.248 7.230 11.500 12.200 16.700
保持p的三位数很重要,但其他位数保持2位数。 digits = 2不能解决问题,因为p只有两位数。
所需的输出:
Rank p LMax 10% 5% 1%
var1 0.427 24.25 21.80 27.40 31.50
var2 0.248 7.23 11.50 12.20 16.70
不知道怎么解决这个问题?
一个hacky解决方案是将您的数据帧转换为字符向量,每个向量具有适当的小数点数。
data_summary <- read.table(text = "
Rank p LMax p10 p5 p1
var1 0.427 24.25 21.8 27.4 31.5
var2 0.228 7.23 11.5 12.2 16.7", header = TRUE)
我们编写一个匿名函数,给定一个整数x
(小数点数)和一个数字向量y
,返回一个字符向量:
out <- mapply(function(x, y) sprintf(sprintf("%%.0%if", y), x),
data_summary[-1],
c(3, 2, 2, 2, 2))
# p LMax p10 p5 p1
# [1,] "0.427" "24.25" "21.80" "27.40" "31.50"
# [2,] "0.228" "7.23" "11.50" "12.20" "16.70"
stargazer
现在为您提供所需的输出:
library(stargazer)
stargazer(data_summary_out,
type = "text",
summary = FALSE,
digits = NA)
# ====================================
# Rank p LMax p10 p5 p1
# ------------------------------------
# 1 var1 0.427 24.25 21.80 27.40 31.50
# 2 var2 0.228 7.23 11.50 12.20 16.70
# ------------------------------------