如何让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
相关产品推荐
相关产品推荐

