lapply 并应用于列表 R 的每个组件和元素

2024-01-25

我有这个清单:

lst

lst <- list(a=c(2.5,9.8,5.0,6.7,6.5,5.2,34.4, 4.2,39.5, 1.3,0.0,0.0,4.1,0.0,0.0,25.5,196.5, 0.0,104.2,0.0,0.0,0.0,0.0,0.0),b=c(147.4,122.9,110.2,142.3))

我想计算列表的每个值和列表的每个元素(a and b) z.score 为:(x[i]-mean(x)/sd(x),其中 x 是列表中每个元素的所有值(合计),x[i] 是每个列表元素的每个单个组件。 我尝试过lapply

lapply(lst,function (x) as.data.frame(apply(x,2, function(y)- lapply(lst,mean)/lapply(lst,sd))))

但有一个错误... 也许与for循环为:

lst.new <- vector("list",1)

for (i in 1:length(lst)){
  for (j in 1:dim(data.frame(lst[i]))[1]){
    res[j] <- (as.numeric(unlist(lst[i]))[j]-mean(as.numeric(unlist(lst[i])))/
      sd(as.numeric(unlist(lst[i])))
    lst.new[[i]] <- res
  }
}

但结果很奇怪(当然我错了lst.new输出):

[[1]]
 [1] -0.3635464 -0.1982809 -0.3069486 -0.2684621 -0.2729899 -0.3024208  0.3586413 -0.3250599  0.4741007 -0.3907133
[11] -0.4201442 -0.4201442 -0.3273238 -0.4201442 -0.4201442  0.1571532  4.0284412 -0.4201442  1.9388512 -0.4201442
[21] -0.4201442 -0.4201442 -0.4201442 -0.4201442

[[2]]
 [1]  0.9671130 -0.4517055 -1.1871746  0.6717671 -0.2729899 -0.3024208  0.3586413 -0.3250599  0.4741007 -0.3907133
[11] -0.4201442 -0.4201442 -0.3273238 -0.4201442 -0.4201442  0.1571532  4.0284412 -0.4201442  1.9388512 -0.4201442
[21] -0.4201442 -0.4201442 -0.4201442 -0.4201442

预期结果可以是不同长度的列表或数据帧,如下所示:

 a       b
   -0.36    0.967113
  -0.19     -0.45
    [...]  [...]

等等...

P.S: 
 0.36 == (2.5- mean(unlist(lst[1])))/sd(unlist(lst[1]))
 0.967113 == (147.4 -mean(unlist(lst[2])))/sd(unlist(lst[2]))

我用比较好lapply(或他的家庭职能)并解决问题


只是为了完整起见,如果没有scale函数@akrun 指出,你的代码应该是:

lapply(lst,function(x) x-mean(x)/sd(x)) 

所有那些lapplyapplys 意味着你正在尝试计算mean and sd个人价值观...

让我们一步一步地完成它。lapply takes lst并将其分解为多个元素。每个元素依次作为匿名函数的参数给出。这意味着该函数获取一个数字向量。然后,使用 R 的向量化,我们所做的就是为向量的每个元素计算该元素的结果,减去mean整个向量除以sd整个向量的。

将其与代码中发生的情况进行比较:

lapply(lst,function (x) as.data.frame(apply(x,2, function(y)- lapply(lst,mean)/lapply(lst,sd))))

所以第一个lapply中断 lst 并将向量一次一个发送到您的函数。

然后该函数必须按列分解向量(apply带维度参数 2) - 这是抛出错误的地方。但即使它成功地将向量分解为元素,你也会有另外两个lapply分解该单个元素并计算mean and sd对于他们个人来说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lapply 并应用于列表 R 的每个组件和元素 的相关文章

随机推荐

  • quarto_render 从 .bat / .cmd 文件中损坏

    这有点复杂 但我认为其他人也可能遇到这个问题 四开本很棒 但一直面临一个问题 其中一个功能 quarto render 无法呈现通过 bat cmd 文件访问的脚本中的文档 如果我从 RStudio IDE 运行 R 脚本 没有问题 但通过
  • Cairo 示例适用于 Python 2.7,但不适用于 Python 3

    最简单的例子 我们通过 Gtk 创建一个窗口 添加 Gtk DrawingArea 的绘图区域 并在其上通过 Cairo 绘制文本 Example usr bin env python from gi repository import G
  • 如何获取 JSON.Net 中 JsonProperty 的名称?

    我有一堂课是这样的 JsonObject MemberSerialization OptIn public class foo JsonProperty name in json public string Bar get set etc
  • 将接口传递给 ASP.NET MVC 控制器操作方法

    在我的 ASP NET MVC 应用程序中 我有一个界面 充当多个不同视图模型的模板 public interface IMyViewModel Client Client1 get set Client Client2 get set V
  • 移动分配与标准复制和交换不兼容

    测试新的移动语义 我刚刚询问了我在使用移动构造函数时遇到的问题 但正如评论中所表明的那样 问题实际上是当您使用标准的 复制和交换 习惯用法时 移动赋值 运算符和 标准赋值 运算符发生冲突 这是我正在使用的类 include
  • 如何在 IONIC 3 中使用路由

    我正在开发一个 Ionic 3 应用程序 现在我正在使用NavController用于路由和切换页面 Ex this navCtrl push DetailsPage 但我现在需要使用 Angular 路由 我发现类似的question h
  • 使用 Mongoose 更新 MongoDB 中的许多记录的正确方法是什么

    我使用 Mongoose 从 MongoDB 中提取一些记录 将它们导入到另一个系统中 然后我想将所有这些文档的状态 文档属性 设置为processed 我可以找到这个解决方案 通过id集更新多个文档 猫鼬 https stackoverf
  • 将多个文件/文件夹从 Windows 资源管理器传递到外部应用程序

    您好 有谁知道如何让 Windows 资源管理器将多个文件 文件夹传递到注册表中引用的外部应用程序 c 我当前能够使用 1 语法对单个文件 文件夹进行操作 但不确定如何让资源管理器传递多个项目 有谁知道如何做到这一点 当您在资源管理器中选择
  • 从 ISO8601 日期时间字符串中提取时区

    如何从 Java 8 中的 ISO 8601 日期字符串中提取时区 e g String timestamp1 2014 02 15T01 02 03Z String timestamp2 2017 10 27T16 22 27 605 0
  • 如何让 git-pull 默认变得详细?

    浏览 git config 变量和 git pull 文档 我没有看到默认情况下使 git pull pull 详细的方法 有人知道有办法吗 并不是所有的东西都有一个配置参数 但你基本上可以使用别名自己处理它 alias pv pull v
  • PHP 是否阻止了粘性位?

    我尝试使用 PHP 的 chmod 将权限设置为 02775 但由于某种原因 它只将 0775 添加到文件中 我认为这可能是 PHP 的 chmod 实现或其他问题 所以我尝试使用 PHP 的 passthru 函数运行 chmod 027
  • Google 登录:拒绝为目标域生成登录提示的权限(javascript Web 应用程序)

    我正在使用 Google 登录 Javascript API 即gapi signin button 在网络应用程序上 该应用程序由 gulp 服务器提供服务 绑定到0 0 0 0 当我在本地开发时 登录过程有效 但是当我在远程服务器上运行
  • FileReader API:如何同步读取文件

    我正在尝试读取使用 html 页面上的输入类型文件选择的文件 我已经实现了读取文件的功能 并且可以读取文件内容 但实际问题是正在读取文件内容异步地它允许执行脚本的其他功能 我将读取的文件内容存储在数组中 当移动到其他函数时 数组是空的 当引
  • 使用 jQuery 对列表项进行分组

    我有一个这样的列表 ul li span class date 2011 05 01 span p Text p li li span class date 2011 05 01 span p Text p li li span class
  • 在同一个图中显示多个可用对象?

    我想在同一个 MATLAB 图中显示多个表格 就像 subplot 可用于显示多个图形一样 然而 似乎 subplot 不适用于 uitable 对象 正如您所看到的 我得到的是五组空轴 而不是分布在图中的五个表 并且只有一个表可见 有没有
  • Python 中的嵌套 try/ except

    try commands try commands try commands try commands except commands return to final commands except commands return to f
  • 如何在没有 MediaExtractor 的情况下使用 MediaCodec 进行 H264

    我需要在没有 MediaExtractor 的情况下使用 MediaCodec 并且我正在使用 FileInputStream 读取文件 目前它不起作用 它在屏幕上显示绿色的乱码图像 这是整个源代码 FileInputStream in n
  • 为什么 jQuery 无法将鼠标悬停处理程序附加到 Flash 对象?

    由于某种原因 jQuery 1 6 2 无法将鼠标悬停处理程序附加到 Flash 对象 有趣的是 getElementById onmouseover 按预期工作 fail content banner mouseover function
  • 如何在 C# 中检测工作的互联网连接?

    我有一个 C 代码 基本上通过 FTP 协议上传文件 使用FtpWebRequest 然而 我想在尝试上传文件之前首先确定是否存在有效的互联网连接 因为 如果没有 则尝试没有意义 软件应该休眠一段时间并再次检查 有没有一种简单的方法可以做到
  • lapply 并应用于列表 R 的每个组件和元素

    我有这个清单 lst lst lt list a c 2 5 9 8 5 0 6 7 6 5 5 2 34 4 4 2 39 5 1 3 0 0 0 0 4 1 0 0 0 0 25 5 196 5 0 0 104 2 0 0 0 0 0