当前位置: 首页 > 知识库问答 >
问题:

使用na。rm=T,在带有do.call的pmin中

轩辕煌
2023-03-14

我想提取存储在列表中的几个矩阵的每个元素的最小值。我正在使用pmin:

do.call(pmin, mylist)

问题在于,这些矩阵的某些元素是 NA,pmin 产生一个 NA,我希望它在排除 NA 后产生最小值。我试图使用do.call(pmin(na.rm=T),我的列表)来解决我的问题

但是我得到一个错误。我也用这个答案试过:data.table和pmin用na.rm=TRUE参数,但是我得到错误是因为。SD不在环境上。类似问题的简单代码是:

mymat1 <- matrix(rnorm(10), ncol=2)

mymat2 <- matrix(rnorm(10), ncol=2)
mymat2[2,2] <- NA

mymat3 <- matrix(rnorm(10), ncol=2)

mylist <- list(mymat1, mymat2, mymat3)

do.call(pmin, mylist)

我在结果矩阵的位置[2,2]得到一个NA,我想得到忽略NAs的最小值。有什么建议吗?谢谢你。

共有2个答案

司空鸣
2023-03-14

如果您使用purrr/tidyverse,您可以使用purrr::调用

library(purrr)
invoke(pmin,mylist,na.rm=TRUE)
#            [,1]       [,2]
# [1,] -0.3053884 -1.3770596
# [2,]  0.9189774 -0.4149946
# [3,] -0.1027877 -0.3942900
# [4,] -0.6212406 -1.4707524
# [5,] -2.2146999 -0.4781501

它基本上是do.call... 参数,其源代码或多或少是@akrun的答案:

function (.f, .x = NULL, ..., .env = NULL) 
{
  .env <- .env %||% parent.frame()
  args <- c(as.list(.x), list(...))
  do.call(.f, args, envir = .env)
}

purrr::部分也很有趣:

pmin2 <- partial(pmin,na.rm=TRUE)
do.call(pmin2,mylist)
#            [,1]       [,2]
# [1,] -0.3053884 -1.3770596
# [2,]  0.9189774 -0.4149946
# [3,] -0.1027877 -0.3942900
# [4,] -0.6212406 -1.4707524
# [5,] -2.2146999 -0.4781501
闾丘炫明
2023-03-14

将< code>na.rm = TRUE连接为命名的< code>list元素,然后将< code>pmin与< code>do.call一起使用,以便找到参数< code>na.rm

do.call(pmin, c(mylist, list(na.rm = TRUE)))
#          [,1]       [,2]
#[1,] -1.0830716 -0.1237099
#[2,] -0.5949517 -3.7873790
#[3,] -2.1003236 -1.2565663
#[4,] -0.4500171 -1.0588205
#[5,] -1.0937602 -1.0537657
 类似资料:
  • 我试图使用pmin函数和数据计算跨行的最小值。表(类似于data.table中的post逐行操作和更新),但使用类似于<code>with=FALSE<code>语法和<code>na的列字符列表。rm=TRUE参数。 我可以直接使用列计算跨行的最小值: 给 但是,我正在尝试对自动生成的大量列执行此操作,并且我希望能够对存储在col_names变量< code>col_names中的任意列列表执行

  • 本文向大家介绍R使用不同类别的NA,包括了R使用不同类别的NA的使用技巧和注意事项,需要的朋友参考一下 示例 该符号NA表示logical缺少的值: 这很方便,因为它可以轻松地强制转换为其他原子向量类型,因此通常仅是NA您所需要的: 如果你确实需要一个单一的NA另一种类型,使用的值NA_character_,NA_integer_,NA_real_或NA_complex_。对于缺少的花式类别的值,

  • 问题内容: Go spec说: 其他任何类型T的方法集都包含接收者类型T的所有方法。相应指针类型 T的方法集是接收者 T或T的所有方法的集合(也就是说,它还包含T)。 我的理解是:T有自己的方法集,而 T有自己的方法集加上T的方法集,因为它可以将接收者 T取消引用到T并调用该方法。因此,我们可以使用变量T的接收者* T调用某些方法。 因此,我决定验证自己的逻辑: http://play.golan

  • 本文向大家介绍linux中rm命令使用详解,包括了linux中rm命令使用详解的使用技巧和注意事项,需要的朋友参考一下 前面学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令。rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。 rm是

  • 问题内容: 我正在这样做,我想使用CollectionView,但我还没有看到原型单元,也不知道在这种情况下如何使用CollectionView,有人可以帮助我吗? 我尝试以这种方式使用,但是比UICollectionView要花很多时间并且很难管理 问题答案: 使用UICollectionView的主要方法是通过编程方式管理逻辑。 首先,创建一个继承自的新类。选择是否要包含xib来轻松设计单元格