r - 访问(并填充)数组中的不同行
问题描述
假设我有一个 3 维数组:
a <- array(dim = c(3, 2, 3))
和一个带有第一维索引的向量:
ind <- c(1,2,3)
现在我想在第二维和第二维的行(ind)中输入一个数字(例如 1)。
a[ind,,] <- matrix(1, ncol = 2, nrow = length(ind))
显然行不通!循环可以工作,但是有更好的解决方案吗?
结果应该是:
, , 1
[,1] [,2]
[1,] 1 1
[2,] NA NA
[3,] NA NA
, , 2
[,1] [,2]
[1,] NA NA
[2,] 1 1
[3,] NA NA
, , 3
[,1] [,2]
[1,] NA NA
[2,] NA NA
[3,] 1 1
解决方案
使用mapply
.
mapply(function(x, y) {a[x,,y] <<- 1;a}, ind, ind)
a
# , , 1
#
# [,1] [,2]
# [1,] 1 1
# [2,] NA NA
# [3,] NA NA
#
# , , 2
#
# [,1] [,2]
# [1,] NA NA
# [2,] 1 1
# [3,] NA NA
#
# , , 3
#
# [,1] [,2]
# [1,] NA NA
# [2,] NA NA
# [3,] 1 1
或者,对于这种特定情况,其中x
和y
相同,只需:
sapply(ind, function(x) {a[x,,x] <<- 1;a})
注意:如果您发现控制台输出不必要的 invisible()
环绕代码。
推荐阅读
- python - asyncio 错误 = rs.append(await session.get(urls)) RuntimeError: Task got bad yield:
- java - Springboot中如何配置@Transactional对Redis的支持?
- javascript - CSS 和 Material UI - 如何让表格内容只向下扩展 || 如何设置容器顶部的固定位置
- php - Laravel 碳的使用
- wordpress - Wordpress 主题编辑文件权限问题
- python - 在python中为随机选择的选项分配一个值
- jquery - 使用 jquery 向现有背景图像添加背景渐变
- c++ - 使用可变参数调用函数,其中可变参数是引用
- c# - 如何使用 TryFindParent
- python - 如何在分组的 Python 数据框中获取值