嵌套循环中的索引

2024-05-26

我是 R 和这个网站的新手。我的目标是创建一个 R 函数,在 ggplot2 中生成特殊类型的箱线图,这肯定是不必要的晦涩难懂的代码。我首先需要通过计算稍后希望绘制的变量来处理其中的潜在输入。

我首先生成一些随机数据,称为datos:

c1=rnorm(98,47,23)
c2=rnorm(98,56,13)
c3=rnorm(98,52,7)
fila1=as.matrix(t(c(-2,15,30)))
colnames(fila1)=c("c1","c2","c3")
fila2=as.matrix(t(c(-20,5,20)))
colnames(fila2)=c("c1","c2","c3")
datos=rbind(data.frame(c1,c2,c3),fila1,fila2)
rm(c1,c2,c3,fila1,fila2)

然后,我计算稍后要绘制的变量,其中包括datos均值 (puntoMedio)、第一和第三四分位数 (cuar1,cuar3),内四分位数范围(iqr),潜在次平均晶须的下限(limInf),潜在超均值胡须的上限(limSup)和离群值(次均值离群值vAtInf和超级平均异常值vAtSup合并在vAt):

puntoMedio=apply(datos,MARGIN=2,FUN=mean)
cuar1=apply(datos,MARGIN=2,FUN=quantile,probs=.25)
cuar3=apply(datos,MARGIN=2,FUN=quantile,probs=.75)
cuar=rbind(cuar1,cuar3)
iqr=apply(cuar,MARGIN=2,FUN=diff)
cuar=rbind(cuar,iqr,puntoMedio)
limInf=array(dim=ncol(datos))
  for(i in 1:ncol(datos)){
    limInf0=as.matrix(t(cuar[1,]-1.5*cuar[3,]))
    if(length(datos[datos[,i]<limInf0[,i],i])>0){
      limInf[i]=limInf0[,i]
    }else{limInf[i]=min(datos[,i])}
  }
limSup=array(dim=ncol(datos))
  for(i in 1:ncol(datos)){
    limSup0=as.matrix(t(cuar[2,]+1.5*cuar[3,]))
    if(length(datos[datos[,i]>limSup0[,i],i])>0){
      limSup[i]=limSup0[,i]
    }else{limSup[i]=max(datos[,i])}
  }
d=data.frame(t(rbind(cuar,limInf,limSup)))
rm(cuar)
vAtInf=datos
  for(i in 1:ncol(vAtInf)){
    vAtInf[vAtInf[,i]>limInf0[,i],i]=NA
  }
  colnames(vAtInf)=c("vAtInfc1","vAtInfc2","vAtInfc3")
vAtSup=datos
  for(i in 1:ncol(vAtSup)){
    vAtSup[vAtSup[,i]<limSup0[,i],i]=NA
  }
  colnames(vAtSup)=c("vAtSupc1","vAtSupc2","vAtSupc3")
datos=cbind(datos,vAtInf,vAtSup)
rm(limInf0,limSup0,cuar1,cuar3,i,iqr,limInf,limSup,puntoMedio)

直到这里一切都按预期进行。我有两个数据框d and datos,前者在这里不感兴趣,后者在这种特定情况下包含九列:所有值中的三列、相应的次均值离群值中的三个和相应的超均值离群值中的三个(后六列用 NA 填充)。我现在希望按列提取所有异常值,因此我尝试制定以下循环。虽然它确实既不给出错误也不给出警告,但它也没有给出所需的输出vAt(再次,逐列 [第 4:9 列] 异常值来自datos)。那么,据我所知,问题发生在嵌套的 for 循环中,在尝试输入i into vAt:循环的每次迭代都会删除最后一次迭代,这样在整个循环完成后,vAt仅包含 NA 和最后一列/最后一次迭代的异常值。

for(i in ((ncol(datos)/3)+1):ncol(datos)){
    vAt=matrix(nrow=.25*nrow(datos),ncol=ncol(datos)-(ncol(datos)/3))
    colnames(vAt)=c(((ncol(datos)/3)+1):ncol(datos))
    if(length(datos[,i][is.na(datos[,i])==F])>0){
        for(j in 1:(length(datos[,i][is.na(datos[,i])==F]))){
            nom=as.character(i)
            vAt[j,nom]=datos[,i][is.na(datos[,i])==F][j]
        }
    }else{next}
}

我没能找到任何现有线程 https://stackoverflow.com/questions/tagged/for-loop+indexing+r这回答了我的问题。谢谢你的帮助。


问题是你正在初始化vAt在此处的循环内。 将初始化语句移到外部for循环将解决您面临的问题:

vAt=matrix(nrow=.25*nrow(datos),ncol=ncol(datos)-(ncol(datos)/3))
colnames(vAt)=c(((ncol(datos)/3)+1):ncol(datos))
for(i in ((ncol(datos)/3)+1):ncol(datos)){
    if(length(datos[,i][is.na(datos[,i])==F])>0){
        for(j in 1:(length(datos[,i][is.na(datos[,i])==F]))){
            nom=as.character(i)
            vAt[j,nom]=datos[,i][is.na(datos[,i])==F][j]
        }
    }else{next}
}

但是,您可以对现有代码进行各种改进:

  1. Using vectorisation and *ply函数而不是for loops.
  2. 不比较逻辑向量==F但只使用!is.na(...).
  3. Using sum(is.na(...))代替length(d[,i][!is.na(...)])

还有更多。这些不会改变代码的正确性,但会使其更高效、更惯用。

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

嵌套循环中的索引 的相关文章

  • R - Plm 和 lm - 固定效应

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用
  • mvc显示模板中当前项目的索引

    我有一个带有显示模板的 mvc 页面 如何获取显示模板中呈现的当前项目的索引 它在名称属性中产生正确的可绑定结果
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • 如何从 R 读取 PDF 元数据

    我们很好奇 有没有一种方法可以从 R 读取 PDF 元数据 例如下面显示的信息 通过搜索我对此无能为力 r pdf metadata在当前的问题库中 非常欢迎任何指点 我想不出纯 R 的方法来执行此操作 但您可能可以安装您最喜欢的 PDF
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c

随机推荐

  • (typeof variable === "function") 和 jQuery.isFunction() 有什么区别?

    我一直用 typeof variable function 我偶然发现jQuery isFunction 我想知道 jQuery方法中的typeof方法有什么区别 不仅有什么区别 而且 什么时候适合使用typeof方法 什么时候适合使用jQ
  • AWS Lambda SNS 发送主题两次

    TL DR 编写 lambda 函数来执行一些数据库查询 然后向某些用户组发送电子邮件 为共享歌曲的每个群组发布 SNS 消息 每个组都有自己的成员 因此有自己的一组电子邮件 每个组的 SNS 主题都会发送两次 会员收到该电子邮件两次 该应
  • Django 视图中的原始 SQL 查询

    我将如何使用原始 SQL 执行以下操作views py from app models import Picture def results request all Picture objects all yes Picture objec
  • Android 设备中未显示背景图片?

    我将以下代码添加到main xml将图像设置为我的应用程序的背景图像 android background drawable bg So main xml看起来像这样
  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • MySQL中的字符串分割函数

    谁能告诉我如何在 mysql 中实现 split 函数 其行为类似于 Javascript split 我想要一个这样的功能 SELECT Split a b c d AS splitted 结果如下 splitted a b c d 有谁
  • 如何在欧洲使用 Cloud Dataflow 区域终端节点?

    是否可以将 Google Cloud Platform Dataflow 作业的区域更改为欧洲 我已将管道区域设置为europe west1 d但我无法更改工作本身的区域 我尝试更改管道选项中的区域 但这会导致错误 并且只有默认区域有效 p
  • Flutter sqflite 插入列表

    我正在尝试将列表插入到 flutter 中的 sql 数据库中 但我不知道该怎么做 有人可以帮助我吗 当我初始化 mi 数据库时 我有这个 Directory documentsDirectory await getApplicationD
  • 使用其他非依赖构造函数参数进行构造函数注入

    我是 IOC 容器的新手 我正在开始使用 NInject 如果您希望您的构造函数具有非服务且不需要由 IOC 容器实例化的参数 您该怎么办 例如 public class Person private readonly string nam
  • 如何在 C++ 中对四元结构进行有效排序?

    我有一个包含 x y z 和 w 成员的结构 如何高效排序 在 C 中首先按 x 然后按 y 按 z 最后按 w 如果你想实现字典排序 那么最简单的方法是使用std tie实现小于或大于比较运算符或函子 然后使用std sort http
  • java.lang.ClassCastException:类 org.springframework.web.servlet.DispatcherServlet 无法转换为类 jakarta.servlet.Servlet

    我已经看到了与我类似的问题的答案 但我已经尝试了一切 错误并没有消失 据我所知 api servlet 类是由两个不同的类加载器加载的 因为 Web 部署程序集中有多个源 我尝试使用 servlet api 3 0 alpha 1 jar
  • 为什么 import numpy 不会自动包含 matlib

    我正在尝试使用水平重复 numpy array xa numpy matlib repmat x 1 3 但是 直接输入此内容会导致错误 我必须添加import numpy matlib为了a numpy matlib repmat x 1
  • “@required”注释作为错误而不是警告

    现在在我的 Flutter 项目中 当我用注释构造函数参数时 required当实例化构造函数时忘记它 我从 IDE 收到一条轻微警告 表明该参数是必需的 我希望这在 IDE 中显示为实际错误 有办法进去吗analysis options
  • 根据不同的列数据范围隐藏行

    我对使用 VBA 相当陌生 我正在尝试创建一个代码 该代码将查看具有不同数据范围的两个不同列 并隐藏最后一个数据点之外的行 引用两列 目前我有这个 Private Sub Worksheet PivotTableUpdate ByVal T
  • 正则表达式 - Python - 删除前导空格

    我使用正则表达式在文本文件中搜索 产品 一词 然后 我使用该搜索的起点和终点来查看该列并提取整数 有些实例 A 列 有我不想要的前导空格 我只想将数字 如 B 列中的数字 打印到文件中 没有前导空格 正则表达式中的正则表达式 有条件的 pr
  • 以小并发批量运行 Promise(一次不超过 X)

    Async 库具有类似的功能每个限制 https github com caolan async eachLimit它可用于将大量作业有效地分布在多个 CPU 核心上 如下所示 var numCPUs require os cpus len
  • Jlist 自定义渲染器

    我正在尝试添加一个我猜你会称其为列表中每个项目的子列表 我构建了一个自定义渲染器 它提供以下输出 正如你所看到的 有些东西不对劲 我没能找到问题的答案 我猜我需要更改面板布局中的某些内容才能获得正确的结果 但不知道是什么 https i s
  • MySql - 自动完成

    我正在创建一个 Ajax 自动完成应用程序 并且想知道是否有一个 SQL 查询可以用于此目的 例如 如果有人键入 p 我想检索所有以 p 开头的单词 如果他们添加 e 检索所有以 pe 开头的单词 并继续这样 有人提出了下面的查询 但我认为
  • 如何识别与给定地理围栏重叠的六边形?

    H3 API参考介绍polyfill 其思想是 在给定地理围栏周围定义的 k 环中的每个六边形上进行点多边形操作 问题是 我不明白 围绕地理围栏定义的 k 环 是什么意思 这是一个 环 它的中心实际上是整个地理围栏吗 如果根据六边形的中心位
  • 嵌套循环中的索引

    我是 R 和这个网站的新手 我的目标是创建一个 R 函数 在 ggplot2 中生成特殊类型的箱线图 这肯定是不必要的晦涩难懂的代码 我首先需要通过计算稍后希望绘制的变量来处理其中的潜在输入 我首先生成一些随机数据 称为datos c1 r