全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
12206 12
2018-11-21
我需要查看多个变量下的数据是否呈现正态分布。
利用for循环,能够输出每个变量的检验结果,即以下print(x)能正确地输出。但是要将检验结果输出为一个数据框时,没有报错,但是输出的结果和之前的结果不一样。这是怎么回事?请大神帮忙看看
i <- 7
rnormtest <- data.frame()
for (i in 7:dim(data)[2])
  {
  x <-shapiro.test(data[,i])
  #message("i = ",i)
  #print(x)
  rnormtest <- rbind(rnormtest, x)
  i <- i + 1
}
rnormtest


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-11-21 16:00:24
应该是一致的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-21 18:28:32
##  试试不用for循环 的新方法:
##########################################
  library(tidyverse)
  library(magrittr)

  ## #####################
rnormtest<-  data%>%
                   map(~shapiro.test(.x))%>%
                   transpose%>%
                   modify_depth(1,unlist)%>%
                   as_tibble%>%
                   select(statistic,p.value)%>%
                   add_column(Varname= names(data) )
# ###################################
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-21 18:41:49
x本身是一个list,没办法直接用rbind

复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-22 09:43:49
hszest 发表于 2018-11-21 18:41
x本身是一个list,没办法直接用rbind
谢谢你。但还是不行,在将resList强制转换为数据框的那一步,报错:
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  :
  参数值意味着不同的行数: 0, 4
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-22 10:00:20
jgchen1966 发表于 2018-11-21 18:28
##  试试不用for循环 的新方法:
##########################################
  library(tidyverse)
谢谢!
因为shapiro.test()跑出来的行数和原数据文件不对等,所以我把最后一行删掉了,把结果提取为新的数据框,就满足我的要求了!谢谢大神!
我对R语言的隐式循环的理解和运用还不是很扎实,谢谢您的帮助。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群