如何在R中保存foreach循环的输出

2023-12-29

我在保存数据输出后遇到问题foreach loop

这是读取我的数据并处理它的函数

readFiles <- function(x){
   data   <- read.table("filelist",
      skip=grep('# Begin: Data Text', readLines(filelist)),
      na.strings=c("NA", "-", "?"),
      colClasses="numeric")
   my     <- as.matrix(data[1:57600,2]);
   mesh   <- array(my, dim = c(120,60,8));
   Ms     <- 1350*10^3    # A/m
   asd2   <- (mesh[70:75,24:36 ,2])/Ms;     # in A/m
   ort_my <- mean(asd2);
   return(ort_my)
}

这是进行并行处理的代码

#R Code to run functions in parallel 
detectCores() #This will tell you how many cores are available 
library("foreach");
library("parallel");
library(doParallel)
#library("doMC") this is for Linux 
#registerDoMC(12) #Register the parallel backend
cl<-makeCluster(4)
registerDoParallel(cl)   # Register 12 cpu for the parallel backend
OutputList <- foreach(i=1:length(filelist),
   .combine='c', .packages=c("data.table")) %dopar% (readFiles) 
#registerDoSEQ() #Very important to close out parallel backend.
aa<-OutputList
stopCluster(cl)
print(Sys.time()-strt)
write.table(aa, file="D:/ads.txt",sep='\t')

一切都很顺利,但是当我检查时OutputList我只看到的function(x)我想写ort_my对于文件列表中的每个文件。

这是我所看到的

[[70]]
function (x) 
{
data <- read.table("filelist", skip = grep("# Begin: Data Text", 
    readLines(filelist)), na.strings = c("NA", "-", "?"), 
    colClasses = "numeric")
my <- as.matrix(data[1:57600, 2])
mesh <- array(my, dim = c(120, 60, 8))
Ms <- 1350 * 10^3
asd2 = (mesh[70:75, 24:36, 2])/Ms
ort_my <- mean(asd2)
return(ort_my)
}
<environment: 0x00000000151aef20>

我怎样才能做到这一点?

此致

现在我使用 doSNOW 包来做同样的事情

library(foreach)
library(doSNOW)
getDoParWorkers()
getDoParName()
registerDoSNOW(makeCluster(8, type = "SOCK"))
getDoParWorkers()
getDoParName()  

strt<-Sys.time() 

data1 <- list() # creates a list
filelist <- dir(pattern = "*.omf") # creates the list of all the csv files in the     directory
i=1:length(filelist)

readFiles <- function(m){ for (k in 1:length(filelist))
data[[k]] <- read.csv(filelist[k],sep = "",as.is = TRUE, comment.char = "", skip=37);  # to read .omf files skip 37 skips 37 line of the header
my <- as.matrix(data[[k]][1:57600,2]);
mesh <- array(my, dim = c(120,60,8));
Ms<-1350*10^3    # A/m
asd2=(mesh[70:75,24:36 ,2])/Ms;     # in A/m

ort_my<- mean(asd2);
return(ort_my)
}  

out <- foreach(m=1:i, .combine=rbind,.verbose=T) %dopar% readFiles(m)

print(Sys.time()-strt)

我有以下错误消息;

Error in readFiles(m) : 
task 1 failed - "object of type 'closure' is not subsettable" 
In addition: Warning message:
In 1:i : numerical expression has 70 elements: only the first used

As ?"%dopar%"各州,在obj %dopar% ex, ex是要计算的 R 表达式。如果你的自由变量 in foreach is i,你应该使用readFiles(i)。目前,您实际上正在返回一个函数对象。

顺便说一句,你的代码有些混乱。例如,我认为readFiles独立于x(即使它有x作为正式论证)...难道不应该吗readLines(filelist[[x]])?

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

如何在R中保存foreach循环的输出 的相关文章

  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • R:错误消息---包错误:“functionName”未从当前命名空间解析

    我正在使用一个一直运行到 R3 0 的软件包 问题如上所述 当我们调用在 R 2 15 2 中工作的函数时 从 R 3 0 开始我们得到一个错误 Error in C solarspectrum3 as double lon as doub
  • 返回带有参数的函数的函数

    创建一个应返回包含原始函数参数的函数时 我应该如何处理 例如考虑这个函数 a lt function value function x x value 我希望它返回我在结果函数的参数中指定的值 如下所示 b lt a 3 gt b gt f
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • Quarto/Rmarkdown 中的美人鱼图:狭窄且模糊

    我正在尝试生成 pdf 格式的四开文档 稍后会生成 word 格式 我遇到了美人鱼图的问题 请在下面找到一个示例 qmd 文件来说明该问题 所以首先它应该支持 mermaid 标签 但当我这样做时 我无法在 rstudio 中 运行 单元
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • glm() 模型的交叉验证

    我正在尝试对我之前在 R 中构建的一些 glm 模型进行 10 倍交叉验证 我对cv glm 函数在boot包 尽管我已经阅读了很多帮助文件 当我提供以下公式时 library boot cv glm data glmfit K 10 这里
  • ggplot 中跨组的连续线

    我有一个数据时间序列 其中观察了一些数据 模拟了一些数据 我想生成整个数据系列随时间变化的图 其中颜色表示数据源 但是 我只能弄清楚如何使 ggplot 中的 geom line 连接同一组中的点 这是一个例子来说明 Create samp
  • R:使用管道将单个参数传递到函数中的多个位置

    我试图专门使用管道来重写以下代码 使用babynames包中的babynames数据 library babynames library dplyr myDF lt babynames gt group by year gt summari
  • 分割单个 SpatialPolygons 对象的多边形部分

    在 R 中 我有一个SpatialPolygons包含数百个多边形的对象 即多个多边形 我想分割这个SpatialPolygons对象放入列表中Polygons 即孔应保持连接到父多边形 知道如何做到这一点吗 EDITED 使用以下提供的示
  • 使用 R 中的 tidyverse 重新调整因子和重新排序因子

    我想使用这些功能重新调平 and 重新排序 在我的数据框中 我了解重新调整级别的工作原理 但我不明白为什么我在 data frame 中看不到级别的变化 例如 假设我有鸢尾花数据集 library tidyverse head iris g
  • 如何使用r中的dplyr在特定位置插入空白行

    我想在数据框中的特定位置插入空白行 我的数据框是这样的 dat lt data frame group c rep A 1 rep B 4 rep C 2 rep D 2 group 1 A 2 B 3 B 4 B 5 B 6 C 7 C
  • 如何在 R 中查找平衡面板数据(又名,如何查找面板中的哪些条目在给定窗口内完整)

    我有来自 Compustat 的大量数据 我向其中添加了一些手工收集的数据 认真地从一堆旧书中手工收集 但我不想手工收集整个面板 只想随机选择一个子集 为了找到更大的集合 我从中随机选择 我想从 Compustat 的平衡面板开始 我看到p
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 如何制作一连串的ggplots并在它们之间绘制箭头?

    对于一个项目 我需要绘制一些图并在它们之间放置箭头作为序列的指示 我想知道我是否可以用 ggplot 来做到这一点 是否可以使用 ggplot2 绘制一个干净的大箭头并将其添加到最终的多重图中 作为示例 我使用此代码来绘制绘图 librar
  • 在 ggplot 中过滤管道 df

    我正在使用 dplyr 管道来清理我的 df 然后直接输入到 ggplot 中 但是 我只想一次只绘制一组 因此我需要过滤到该组 问题是 我希望比例保持不变 就好像所有群体都存在一样 是否可以在 ggplot 命令中进一步过滤管道 df 例
  • 在 R 中收集多组列[重复]

    这个问题在这里已经有答案了 我有一个宽数据框 需要将其收集或融化成一个高数据框 我遇到的问题是我有几组列需要保持关联 分组 我每个表单提交有 2 个用户 每个用户有 3 列数据 我想将这 6 列基本上以 3 组的形式堆叠起来 以便每个用户都
  • 一次评论多个对象

    假设您有一个变量 a 到 j 的列表 for x in 1 10 assign letters x x 您将如何评论那些最近创建的对象 我尝试过类似的事情 for x in 1 10 comment get letters x lt pas
  • 通过 r 中的组变量进行汇总

    我有一个数据框如下 head newStormObject FATALITIES INJURIES PROPVALDMG CROPVALDMG EVTYPE total 1 0 15 2 5e 05 0 TORNADO 15 2 0 0 2

随机推荐

  • 如何在anjuta项目中包含资源文件

    我正在尝试更新 vala 中的图形项目 将大量代码行移动到 ui 文件中 我想使用模板 可用于 glib 2 38 和 GTK 3 8 类似的东西 我的项目是用 Anjuta 和 autoconf 管理的 In the src目录有 app
  • 如何在 PHP 中进行 URL 重写?

    我正在尝试在我的 PHP 应用程序中实现 URL 重写 有人可以分享一下在 PHP 和 MySQL 中实现 URL 重写的分步过程吗 在我的应用程序中 我想实现以下 URL 重写 我想重定向 1 http example com video
  • Firefox ... SVG ... 下划线...天哪?

    到目前为止 我尝试的任何方法都无法让 Firefox 在某些文本下划线 根据谷歌的结果 这个问题已知并记录了五年多 这不可能是真的 发生了什么事 有人知道任何持续有效的解决方法 甚至可能知道他们为什么还没有修复它的原因 我对此很好奇 Fir
  • OCaml:模式匹配与 If/else 语句

    因此 我对 OCaml 完全陌生 并且在实现第一个功能方面进展相当缓慢 我无法理解的一件事是何时使用模式匹配功能 例如 let foo gt true gt false 与使用 if else 结构类似 let foo a if a the
  • 如何在部署时在Heroku中自定义pip的requirements.txt?

    我正在将 Python Django 应用程序部署到 Heroku 并且仅当部署到 Heroku 等某些环境时 我才想自定义requirements txt 文件 通过添加 git 支持的依赖项和密码 我很想将其设置在环境变量或其他变量中
  • 在模板类实现中使用struct template

    我正在尝试学习 C 中的模板用法 我创建了一个结构节点 在队列类实现中使用它 但出现编译器错误 错误 成员函数 bool MyQueue add T data 中 qnode 之前的预期类型说明符 include
  • 获取 R 中某个因子中出现次数最多的元素

    我在 R 变量中有一组字符串 当我检查类时 它说它是一个因素 例如 mySet lt c abc abc def abc def efg abc 我想获取该集合中出现次数最多的字符串 即本例中的 abc 我理解一种方法是使用hist 但我面
  • 安装 Visual Studio 扩展

    我刚刚开始使用 VS2015 但在做一些本应简单的事情时遇到了麻烦 安装 Side Waffle 扩展 我从他们的网站下载了 vsix 文件 templatepack vsix 当我双击它时 我收到一条消息 扩展清单无效 因此 我进入 Vi
  • 关于c中的表达式“&anArray”

    首先 我读到 array array array 0 只要 array 确实是一个数组 一切都会相同 所以我尝试 int main char ar a b c 0 printf argument ar s n ar printf argum
  • 迁移中如何使用DbContext?

    我该如何使用DbContext它适用于当前数据库 现在在迁移中使用 Example namespace Data SqlServer Migrations DbContext typeof MyDbContext I want use th
  • 如何编译使用 hamcrest 'is' 的 Kotlin 单元测试代码

    我想为我的 Kotlin 代码编写一个单元测试并使用 junit hamcrest 匹配器 我想使用is方法 但它是 Kotlin 中的保留字 我怎样才能编译以下内容 class testExample Test fun example a
  • 在 Delphi 中使用 dispInterface 且没有 classid

    我已将一个类型库导入到具有许多调度接口的 Delphi XE2 中 他们中的大多数都有一个自动创建的组件类并自动创建相应的delphi T 接口 然而 我需要使用的一些调度接口没有 classid 我已经尝试了在网上可以找到的所有示例来利用
  • MOTODEV Studio 与 SDK 安装有关的问题

    我以前有 Java 编程经验 并且还接受过大学 Java 培训 因此我希望使用 Android 进行一些 Java 应用程序开发 为此 我从 Motorola 下载并安装了 MOTODEV studio 它部分基于 Eclipse 不过默认
  • 使用 Redirect 与 RewriteRule 的速度影响

    我很想知道 Apache 上 htaccess 规则中的 RewriteRules 和 Redirect 之间的速度是否有任何差异 在我看来 RewriteRules 通常可以是复杂的正则表达式 我认为与 Redirect 相比 它有开销
  • URI 太长时 Chrome 崩溃

    我正在为我的 HTML5 游戏制作一个导出功能 我当前的保存方法是游戏数据的粗略序列化 然后 this is Javascript var gameData abc this is actually a HUGE string of ove
  • 使用 PHP 从 Youtube 视频 URL 获取 Youtube 视频缩略图

    假设我有一个 YouTube 视频网址www youtube com watch v B4CRkpBGQzU feature youtube gdata par1 1 par2 2 我想获取视频缩略图 gt i3 ytimg com vi
  • Android Espresso IdlingResources 和片段/活动转换

    我有一个托管片段 F1 的活动 单击按钮后 F1 被另一个片段 F2 替换 当按下后退按钮时 应用程序通过一个按钮从 F2 返回到 F1退出过渡动画片 我的 Espresso 测试用例大致如下所示 Test public void pres
  • Django 和 MySQL unicode 错误

    我正在得到一个Incorrect string value Exception Value Incorrect string value xEA xB0 x95 xED x95 x98 for column object repr at r
  • 如何将存储过程的多个输出抓取到临时表中

    我的存储过程返回两个输出 我想在另一个存储过程中使用其中一个 因此尝试获取临时表中的第二个输出 但由于两个输出的结构不同 因此我总是得到 列名称或提供的值的数量与表定义不匹配 即使我更改输出的顺序 第一个输出第二个 第二个输出第一个 它也不
  • 如何在R中保存foreach循环的输出

    我在保存数据输出后遇到问题foreach loop 这是读取我的数据并处理它的函数 readFiles lt function x data lt read table filelist skip grep Begin Data Text