后续:从 lme4 中的 VarCorr 对象中提取名称并将其粘贴为列名称

2023-12-02

我正在跟进这个很好的答案。功能foo下面,取Name的列VarCorr(fit)输出并使它们成为列名summary(rePCA(fit)) call.

当我们输入时效果很好fm1, fm2,但我想知道为什么它失败了fm3?有解决办法吗?

library(lme4) 
dat <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/sng.csv')
fm1 <- lmer(diameter ~ 1 + (1|plate) + (1|sample), Penicillin) 
fm2 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
fm3 <- lmer(y ~ A * B * C + (A + B | group) + (C|group), data = dat)


foo <- function(fit) {
  
  obj <- summary(rePCA(fit))
  model <- VarCorr(fit)
  
  Map(function(x, z) {
    colnames(x$importance) <- paste(z, unique(sapply(model, colnames)), sep = '_')
    x
  }, obj, names(obj))
}

#EXAMPLE OF USE:
foo(fm1) ###     OK !
foo(fm2) ###     OK !
foo(fm3) ###     :-( Error in dimnames(x) <- dn

当长度为obj and model是不同的。这是一个让它工作的技巧fm3.

foo <- function(fit) {
  
  obj <- summary(rePCA(fit))
  model <- VarCorr(fit)
  if(length(obj) == length(model)) {
   obj <- Map(function(x, z) {
    colnames(x$importance) <- paste(z, unique(sapply(model, colnames)), sep = '_')
    x
  }, obj, names(obj))
  }
  else if(length(obj) == 1) {
    colnames(obj[[1]]$importance) <- unlist(mapply(paste, names(model), sapply(model, colnames), MoreArgs = list(sep = '_')))
  }
  return(obj)
}

这将返回以下输出:

foo(fm1) 

#$plate
#Importance of components:
#                       plate_(Intercept)
#Standard deviation                  1.54
#Proportion of Variance              1.00
#Cumulative Proportion               1.00

#$sample
#Importance of components:
#                       sample_(Intercept)
#Standard deviation                   3.51
#Proportion of Variance               1.00
#Cumulative Proportion                1.00

foo(fm2) 
#$Subject
#Importance of components:
#                       Subject_(Intercept) Subject_Days
#Standard deviation                   0.967       0.2309
#Proportion of Variance               0.946       0.0539
#Cumulative Proportion                0.946       1.0000

foo(fm3) 
#$group
#Importance of components:
#                       group_(Intercept) group_A group_B group.1_(Intercept) group.1_C
#Standard deviation                 1.418   1.291  0.5129              0.4542 0.0000497
#Proportion of Variance             0.485   0.402  0.0634              0.0498 0.0000000
#Cumulative Proportion              0.485   0.887  0.9502              1.0000 1.0000000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

后续:从 lme4 中的 VarCorr 对象中提取名称并将其粘贴为列名称 的相关文章

随机推荐

  • 测试 IInterruptableJob

    我有以下代码 private static void InterruptAJob JobKey foundJobKey IScheduler sched if null foundJobKey sched Interrupt foundJo
  • 泛型方法重载的问题

    我有以下方法 void s
  • Python3 Flask上传文件在服务器内存中

    我在Python3中使用Flask作为网络服务器 并使用Flask的上传功能 将文件上传到服务器会产生werkzeug datastructures FileStorage object 我需要此文件的功能之一 还需要能够从路径对象打开文件
  • 如何将多个 JSON 字符串合并为一个 ( Java )

    我尝试寻找一个可以使用的JAVA库 但没有成功 是否有一个 gson jackson groovy 库可以用来将多个 JSON 字符串组合或合并到一个有效负载中 例子 JSON 负载 A B 和 C 我希望将 B 和 C 添加 合并到 A
  • 组织原型 javascript,同时保留对象引用和继承

    我使用 JavaScript 原型和继承构建了一个大型应用程序 但我很难组织我的代码 例如 我有一个类轮播 它有很多这样的功能 Carousel prototype next function Carousel prototype prev
  • JSON.NET 反序列化 - 单个结果与数组

    我在尝试确定如何使我的序列化能够正确访问单个结果以及数组时遇到困难 当我进行 REST 调用在服务器上查找某些内容时 有时它会返回模型数组 但如果搜索结果只有一个模型 则不会作为错误返回 这是当我收到无法反序列化的异常时 因为对象属性需要一
  • char 类型乘以另一个 char

    C C 中两个字符相乘的结果是什么类型 unsigned char a 70 unsigned char b 58 cout lt lt a b lt lt endl prints 4060 means no overflow cout l
  • 查找字符串中重复字符的最长子串

    这是基础这个代码强制问题 我尽量不寻求有关 codeforces 问题的帮助 除非我真的真的陷入困境 而现在恰好就是这样 Your first mission is to find the password of the Martian d
  • glCopyTexImage2D 作为 glReadPixels (OpenGL ES) 的替代品

    我目前正在使用 OpenGL ES 游戏的屏幕截图glReadPixels 屏幕截图很棒 但是调用glReadPixels导致游戏中出现轻微卡顿 glCopyTexImage2D已被建议作为更有效的替代品glReadPixels 如何glC
  • 如何获取QTableView右键索引

    下面的代码创建一个带有QTableView看法 左键单击onLeftClick函数获取 QModelIndexindex 该 QModelIndex 稍后用于打印左键单击单元格的行号和列号 如何获得QModelIndex右键单击的单元格的索
  • ffmpeg:编辑元数据并自动增加其名称+根据“名称”设置“标题”的值

    此 PowerShell 代码分割了一个大的音频文件 sound1 在 5 分钟内将它们保存为sound100 1 mp3 sound1 002 mp3 ffmpeg i file name complete f segment segme
  • 从 Bool 数组返回索引值数组,其中 true

    任何人都知道一种从值为 true 的布尔数组返回索引值数组的优雅方法 例如 let boolArray true true false true 这应该返回 0 1 3 let boolArray true true false true
  • 带图像的 Foreach 循环

    我有一个 80 PNG 图像序列 我试图在其中为我的 Windows 应用程序创建动画 文件路径是 Assets Star 我试图弄清楚如何为文件夹中的每个图像创建 foreach 循环 因此它将图像对象设置为 Image1 然后在计时器经
  • 为什么我的 div 的边距会受到其内部内容/块的影响?

    我有以下内容 div p some content p div or div some content div 没有 p some content p div的定位不同 看起来 div 内的块内容正在影响 div 的外 顶部 边距 那么di
  • 将 Pandas 数据框放入现有 Excel 工作表

    有没有办法将数据框放入现有的 Excel 工作表中 我有一个数据框 需要将其复制到特定的 Excel 工作表中的特定位置 单元格 A2 这样它将镜像 粘贴 整个数据框 从选定的单元格 如图所示 开始 包括下面的单元格 这样我就不必一一为特定
  • 哪里可以获得 Eclipse 的 ADT 18?

    我的 eclipse 将 ADT 更新为 20 我认为这很糟糕 我想恢复到 18 但找不到从哪里下载 In here https dl ssl google com android eclipse 它仅提供版本 20 Thanks 下载此文
  • 使用 CSS,如何创建*粗*超过 1 像素的文本描边轮廓?

    下面是我用来制作 1px 文本描边轮廓的代码 但是如何使轮廓变粗呢 如果我只是将所有 1px 替换为 5px 结果看起来很疯狂 HTML div class element Hello div CSS element color white
  • 如何利用HTTP header XSS漏洞?

    假设一个页面只是打印 HTTP referer 标头的值 没有转义 因此 该页面容易受到 XSS 攻击 即攻击者可以使用包含类似内容的引用标头来制作 GET 请求 但如何才能真正使用它来攻击目标呢 攻击者如何使用该特定标头向目标发出特定请求
  • 为类型别名元组添加 Impl (f64, f64)

    我有一个自定义类型 Point type Point f64 f64 我想添加两个Point在一起 但我收到此错误 error E0368 binary assignment operation cannot be applied to t
  • 后续:从 lme4 中的 VarCorr 对象中提取名称并将其粘贴为列名称

    我正在跟进这个很好的答案 功能foo下面 取Name的列VarCorr fit 输出并使它们成为列名summary rePCA fit call 当我们输入时效果很好fm1 fm2 但我想知道为什么它失败了fm3 有解决办法吗 librar