使用replicate()或sapply()重复用户定义的函数

2024-01-25

我定义了一个自定义函数,如下所示:

my.fun = function() {

      for (i in 1:1000) {
      ...
        for (j in 1:20) {
          ...
        }
      }

 return(output)

}

它返回一个输出矩阵,output,由 1000 行和 20 列组成。

我需要做的是重复该功能 5 次并存储这 5 次output结果变成一个全新的矩阵,比如说final, but 不使用另一个 for 循环(这是为了使代码更清晰,也是因为在第二个时刻我想尝试并行化这些额外的 5 次重复)。

Hence final应该是一个具有 5000 行和 20 列的矩阵(这 5 次重复背后的基本原理是,在我使用的两个 for 循环中,除其他函数外,sample).

我尝试使用final <- replicate(5, my.fun()),它正确地计算了五个复制,但是我必须“手动”将元素放入一个全新的 5000 x 20 矩阵中..有没有更优雅的方法来做到这一点? (也许使用sapply()?)。非常感谢


按照目前的情况,您可能有一个三维数组。如果你想要一个列表,你可以添加 Simply=FALSE。尝试这个:

do.call( rbind, replicate(5, my.fun(), simplify=FALSE ) )

或者你可以使用aperm在“final”仍然是一个数组的情况下:

fun <- function() matrix(1:10, 2,5)
final <- replicate( 2, fun() )
> final
, , 1

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

, , 2

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

> t( matrix(aperm(final, c(2,1,3)), 5,4) )
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
[3,]    1    3    5    7    9
[4,]    2    4    6    8   10

可能还有更经济的矩阵运算。我只是还没有发现一个。

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

使用replicate()或sapply()重复用户定义的函数 的相关文章

随机推荐

  • 为什么使用 python tkinter 时框架会调整大小?

    我的代码如下 import tkinter as tk setting up window root tk Tk root title CSV Maker root geometry 600x300 setting up frames le
  • 如何忽略图标?在git中

    在尝试使用 git 设置保管箱文件夹时 我看到了一个不是我创建的 Icon r 文件 我尝试在 gitignore 文件中忽略它 但添加Icon r Icon r r Icon 根本行不通 您可以使用vim http www vim org
  • SSE 和 AVX 的 SIMD 数学库

    我正在寻找 SSE 和 AVX 的 SIMD 数学库 最好是开源的 我的意思是 例如 如果我有一个带有 8 个浮点值的 AVX 寄存器 v 我希望 sin v 立即返回所有八个值的 sin AMD 有一个专有库 LibMhttp devel
  • 如何解决“预检无效(重定向)”或“预检请求不允许重定向”

    我已按照此步骤设置我的服务器以启用 CORS https learn microsoft com en us aspnet web api overview security enabling cross origin requests i
  • CGEventPostToPSN() 不适用于鼠标点击

    我需要将鼠标单击事件发送到任意进程 不一定是前面的进程 而不将该进程的窗口带到前面 此代码用于发送鼠标单击并让窗口服务器将其发送到它认为具有焦点的任何进程 include
  • 使用 VBA 更改图表字体

    如何使用 VBA 更改 Excel 图表的字体 如果我手动选择图表 并在手动更改字体名称和大小时录制宏 则会得到下面的宏 但是 当我立即重播宏时 它会抛出运行时错误 指定的值超出范围 所以看起来宏记录器有一个错误 这意味着我自己无法找出更改
  • java.util.Map 的 getOrDefault() 如何工作?

    我注意到 如果我执行 map getOrDefault key1 new Object 即使对象存在key1在地图上 new Object 被建造 虽然该方法没有返回它 但它仍然创建它 例如 public class Empl privat
  • 从 ByteArrayInputStream 获取内部字节数组

    我想从 ByteArrayInputStream 获取内部字节数组 我不想扩展该类或将其写入另一个字节数组 有没有实用程序类可以帮助我做到这一点 Thanks 您无法访问相同的字节数组 但您可以轻松复制流的内容 public byte re
  • WooCommerce |设置账单字段值

    我想将结帐账单字段的值预先填充到用户的数据库存储值在他第一次购买之前 我尝试过以下代码 add filter woocommerce checkout fields function fields fields billing billin
  • 使用 Boost Graph Library 将 boost 动态属性写入文件

    我已经问过问题了here https stackoverflow com questions 34132273 adding custom properties to vertex of a grid in boost graph libr
  • 如何将Spark结构化流数据写入Hive?

    如何将Spark结构化流数据写入Hive 有df write saveAsTable tablename 但是我不确定这是否会写入流数据 我通常这样做df writeStream trigger new ProcessingTime 100
  • 如何从 Node.js 中的错误中获取行名和文件名?

    假设我有 var err new Error My error 如何获取行名和文件名 在哪里Error被创造了 就像 PHP 中一样 ex new Exception ex gt getLine ex gt getFile 您可以使用堆栈跟
  • 如何使用 NSDateFormatter 查看“Today”字符串

    苹果在消息应用程序中使用它来发送今天的消息 今天上午 11 45 昨天上午 11 45 我在苹果开发者网站上看到它 要为日期格式化程序指定自定义固定格式 您可以使用 设置日期格式 格式字符串使用以下格式模式 Unicode 技术标准 35
  • 工厂方法模式与多处理队列的使用冲突

    我已经实现了工厂方法模式来参数化产品类的基类 def factory ParentClass class Wrapper ParentClass attr foo def wrapped method Do things to be don
  • 使用 PEM PrivateKey 签署字符串

    我有一个 PEM 编码的私钥 我需要用它签署一个字符串 但代码不断崩溃 出现异常 java security spec InvalidKeySpecException java lang RuntimeException error 0c0
  • 具有多个 Active Directory 服务器的 Grails Spring Security LDAP 插件

    我有 Grails Spring Security 插件连接到一台 Active Directory 服务器 没有任何问题 但是 我需要连接到多个服务器 我们在一台 AD 服务器上有一些用户 在另一台服务器上有其他用户 因此我们需要尝试在两
  • 内存转储比可用内存小得多

    我有一个 Tomcat 应用程序服务器 配置为在 OOM 上创建内存转储 并且以 Xmx1024M 启动 因此应该有千兆字节可供他使用 现在我找到了一个这样的转储 它只包含 260MB 的未保留内存 垃圾场怎么可能比他应有的可用大小小得多
  • SonarQube 规则鱿鱼:S1451 应定义版权和许可证标头

    我的所有 SonarQube 代码分析 Java 项目都未能遵循此规则 每个源文件都应以标头开头 说明文件所有权以及分发应用程序必须使用的许可证 此规则必须包含每个文件开头所需的标题文本 有一个参数 headerFormat 预期的版权和许
  • gnuplot 坐标系之间的转换

    TL DR 有没有办法在多图设置中对齐不同图的角 有没有办法转换axis坐标到screen坐标 详细解释 我正在尝试使用 gnuplot 布局一个相当复杂的画布 为了实现我想要的 我需要将不同的图精确地堆叠在一起 我做了类似的事情 rese
  • 使用replicate()或sapply()重复用户定义的函数

    我定义了一个自定义函数 如下所示 my fun function for i in 1 1000 for j in 1 20 return output 它返回一个输出矩阵 output 由 1000 行和 20 列组成 我需要做的是重复该