为什么Pivot_Long()在其输出中只嵌套四个整数值 [英] Why pivot_longer() nests simply four integer values in its output

查看:0
本文介绍了为什么Pivot_Long()在其输出中只嵌套四个整数值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道为什么我下面的pivot_longer()调用在value列下返回嵌套输出?

foo <- function(){ 
 n_subj = 5
 n_trials = 20
 subj_intercepts = rnorm(n_subj, 0, 1)
 slope = .6
 mx = 30
 data = data.frame(subject = rep(1:n_subj, each=n_trials),
                   intercept = rep(subj_intercepts, each=n_trials)) %>%
   mutate(x = rnorm(n(), mx, 1),
          y = intercept + slope*(x-mean(x)) + rnorm(n(), 0, 1))
 
mlm = coef(summary(lmer(y ~ x + (1|subject), data=data)))[2,1]
ols = coef(summary(lm(y ~ x, data=data)))[2,1]
list(ols=ols, mlm=mlm)
}
 
kk <- data.frame(t(replicate(2, foo())))

pivot_longer(kk, everything())

#  name  value    
#  <chr> <list>   
#1 ols   <dbl [1]>
#2 mlm   <dbl [1]>
#3 ols   <dbl [1]>
#4 mlm   <dbl [1]>

推荐答案

您正在函数中创建一个列表:Add/Wrapunlist在函数代码的末尾添加/换行以获得tibble

foo <- function(){ 
    n_subj = 5
    n_trials = 20
    subj_intercepts = rnorm(n_subj, 0, 1)
    slope = .6
    mx = 30
    data = data.frame(subject = rep(1:n_subj, each=n_trials),
                      intercept = rep(subj_intercepts, each=n_trials)) %>%
        mutate(x = rnorm(n(), mx, 1),
               y = intercept + slope*(x-mean(x)) + rnorm(n(), 0, 1))
    
    mlm = coef(summary(lmer(y ~ x + (1|subject), data=data)))[2,1]
    ols = coef(summary(lm(y ~ x, data=data)))[2,1]
    unlist(list(ols=ols, mlm=mlm))
}

输出

  name  value
  <chr> <dbl>
1 ols   0.600
2 mlm   0.581
3 ols   0.441
4 mlm   0.528

这篇关于为什么Pivot_Long()在其输出中只嵌套四个整数值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆