You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让R语言Markdown代码块中<dbl [1]>显示为数值?

解决R代码块中p-value显示<dbl [1]>的问题

问题原因

你当前的代码里,shapiro.test返回的是包含多元素的列表对象,经过sapply和转置处理后,p.value列存储的是单个数值的向量(即<dbl [1]>类型),而非标量数值,所以在Markdown渲染的输出中会显示向量类型标识,而非具体数值。

解决方案

方法1:直接提取p值(推荐)

在sapply调用时直接提取shapiro.test结果中的p.value,得到标量数值:

# 正态性检验,直接提取p值
data %>%
  select_if(is.numeric) %>%
  sapply(function(x) shapiro.test(x)$p.value) %>%
  data.frame(p.value = .) %>%
  mutate(Is_normally_distributed = p.value >= 0.05)

方法2:展开向量列

如果要保留原有处理流程,可使用tidyr::unnest将向量列展开为标量:

library(tidyr)

data %>%
  select_if(is.numeric) %>%
  sapply(shapiro.test) %>%
  t() %>%
  data.frame() %>%
  dplyr::select(p.value) %>%
  unnest(p.value) %>%
  mutate(Is_normally_distributed = p.value >= 0.05)

或者不用额外包,通过sapply提取向量中的数值:

data %>%
  select_if(is.numeric) %>%
  sapply(shapiro.test) %>%
  t() %>%
  data.frame() %>%
  dplyr::select(p.value) %>%
  mutate(p.value = sapply(p.value, identity),
         Is_normally_distributed = p.value >= 0.05)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:10:30