小编CJB*_*CJB的帖子

有选择地使用 drop [R] - 仅删除指定的长度为 1 的维度

子集函数中的drop函数和drop参数[都完全起作用或根本不起作用。例如,如果我有一个四维数组,其第 2 维和第 4 维的长度仅为 1,那么drop将返回一个删除了这两个维度的二维数组。我怎样才能放下第 4 维而不是第 2 维?

例如

arr <- array(1:4, c(2, 1, 2, 1))
drop(arr)
arr[,,, 1, drop = TRUE]
Run Code Online (Sandbox Code Playgroud)

在我的情况下这样做的原因是我可以正确设置数组以绑定到abind. 在给定的示例中,人们可能希望arr[,,, 1]沿维度 2绑定到一个 3 维数组。

arrays r subset multidimensional-array

6
推荐指数
1
解决办法
500
查看次数

在R中定义`+ =`

C和VB.NET(可能还有其他一些)具有增加变量的便利功能.例如:

x = 3
x +=5
# x now equals 8
Run Code Online (Sandbox Code Playgroud)

有没有办法在R中定义这样的运算符?我试过了:

`+=` <- function(x, y){x <<- x + y}
Run Code Online (Sandbox Code Playgroud)

但没有快乐.这是基于这个问题的答案.

r increment variable-assignment

5
推荐指数
0
解决办法
127
查看次数

如何在两个列表中处理NA?

我有两个列表,我想让它们保持一致NA.放置NA每当两个列表中的一个中存在NA而不更改列表结构中的任何其他内容时.

set.seed(123)
m1 <- matrix(nrow=2,ncol=2,data=runif(4))
m1[1,1] <- NA
m2 <- matrix(nrow=2,ncol=2,data=runif(4))
m2[1,2] <- NA
lis <- list(m1, m2)
m1 <- matrix(nrow=2,ncol=2,data=runif(4))
m2 <- matrix(nrow=2,ncol=2,data=runif(4))
m2[2,1] <- NA
bis <- list(m1, m2)
Run Code Online (Sandbox Code Playgroud)

我试过这个但没有成功 bis[is.na(lis)]=NA

期望的输出:

  > lis
[[1]]
          [,1]      [,2]
[1,]        NA 0.9568333
[2,] 0.4566147 0.4533342

[[2]]
         [,1]     [,2]
[1,] 0.9404673       NA
[2,] 0.0455565       NA

   > bis
 [[1]]
        [,1]      [,2]
[1,]        NA 0.9568333
[2,] 0.4566147 0.4533342

 [[2]]
         [,1]        [,2]
 [1,] 0.6775706        NA
 [2,] 0.5726334        NA
Run Code Online (Sandbox Code Playgroud)

r matrix na

5
推荐指数
1
解决办法
63
查看次数