我最终得到了一个很大的data.table,我必须每行做一次操作.(是的......我知道这显然不是data.table的用途)
R) set.seed(1)
R) DT=data.table(matrix(rnorm(100),nrow=10))
R) DT[,c('a','b'):=list(1:10,2:11)]
R) DT
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 a b
1: -0.6264538107 1.51178116845 0.91897737161 1.35867955153 -0.1645235963 0.3981058804 2.40161776050 0.475509528900 -0.5686687328 -0.5425200310 1 2
2: 0.1836433242 0.38984323641 0.78213630073 -0.10278772734 -0.2533616801 -0.6120263933 -0.03924000273 -0.709946430922 -0.1351786151 1.2078678060 2 3
3: -0.8356286124 -0.62124058054 0.07456498337 0.38767161156 0.6969633754 0.3411196914 0.68973936245 0.610726353489 1.1780869966 1.1604026157 3 4
4: 1.5952808021 -2.21469988718 -1.98935169586 -0.05380504058 0.5566631987 -1.1293630961 0.02800215878 -0.934097631644 -1.5235668004 0.7002136495 4 5
5: 0.3295077718 1.12493091814 0.61982574789 -1.37705955683 -0.6887556945 1.4330237017 …Run Code Online (Sandbox Code Playgroud) 我想提取存储在列表中的多个矩阵的每个元素的最小值。我正在使用 pmin:
do.call(pmin, mylist)
Run Code Online (Sandbox Code Playgroud)
问题是这些矩阵的某些元素是 NA,并且 pmin 产生一个 NA,我希望它在排除 NA 后产生最小值。我尝试使用 do.call(pmin(na.rm=T), mylist) 解决我的问题
但我收到错误。我也尝试过这个答案:data.table and pmin with na.rm=TRUE argument,但我收到错误,因为 .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)
Run Code Online (Sandbox Code Playgroud)
我在结果矩阵的位置 [2,2] 处得到一个 NA,并且我想获得忽略 NA 的最小值。有什么建议么?谢谢。