You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修改R语言中lsmeans输出及数据框的小数位数

解决R中数据框与lsmeans结果小数位数显示问题

我来帮你搞定这个小数位数显示的问题!你的情况其实是两个原因导致的:一是tibble(你的数据框是tbl_df类型)有自己的打印规则,默认不会显示太多小数位;二是lsmeans对象的打印需要专门指定参数来调整小数位数。下面是具体的解决方法:

1. 让数据框X的N、Dm列显示3位小数

你的数据是tibble格式,它默认用pillar包来控制输出格式,全局的options(digits)设置对它不起作用。你有两种方式调整:

方式一:临时打印时指定位数

直接在打印数据框时加上digits参数,就能临时显示更多小数位:

print(X, digits = 5)

运行后你会看到和view(X)一致的3位小数输出,比如Ndigestibility列会显示92.39691.313这样的结果。

方式二:全局设置tibble的打印规则

如果你希望之后所有tibble都默认显示5位有效数字(对应你的数值就是3位小数),可以设置pillar的全局选项:

options(pillar.sigfig = 5)

设置完后再输入X直接打印,就能看到符合要求的小数位数了。

2. 让lsmeans的N结果显示3位小数

你之前用print(lsmeans, decimals=3)没效果,大概率是参数名不对——lsmeans的打印方法用的是digits参数,而不是decimals。假设你的lsmeans结果存在lsm_result变量里,试试下面的方法:

方法一:直接打印时指定位数

# 假设你的lsmeans代码是类似这样的:
# lsm_result <- lsmeans(your_model, ~ Diet, var = "Ndigestibility")
print(lsm_result, digits = 5)

这样就能让结果显示3位小数。

方法二:转成数据框后处理

如果上面的方法还是不行,可以把lsmeans结果转成普通数据框,再用之前的方法打印:

as.data.frame(lsm_result) %>% print(digits = 5)

为什么你之前的方法没生效?

  • format(X, digits=5):这个函数会把数据框的列转成字符型,而不是修改打印的显示规则,所以之后打印还是会受默认设置影响。
  • options(digits = 5):这个对普通数据框有效,但你的数据是tibble,它有自己的打印系统,所以需要调整pillar的选项。
  • print(lsmeans, decimals=3):参数名错误,lsmeans的打印方法不识别decimals,要用digits

你可以试试上面的方法,应该就能得到和view(X)一致的3位小数显示效果啦!

内容的提问来源于stack exchange,提问作者emily

火山引擎 最新活动