You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写R自定义函数实现矩阵内所有奇数乘以0.618

R语言矩阵奇数缩放函数实现

最优向量化实现(推荐)

R支持原生向量化操作,不需要编写for循环即可完成元素筛选和赋值,执行效率更高,代码更简洁:

# 自定义函数:仅接收矩阵,将所有奇数乘以0.618
scale_odd_matrix <- function(mat) {
  # 参数类型校验
  if (!is.matrix(mat)) {
    stop("参数错误:仅支持矩阵类型输入")
  }
  # 筛选奇数元素并赋值
  mat[mat %% 2 == 1] <- mat[mat %% 2 == 1] * 0.618
  return(mat)
}

测试示例

# 构造测试矩阵
test_mat <- matrix(1:6, nrow = 2, byrow = TRUE)
print(test_mat)
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6

# 调用函数
result_mat <- scale_odd_matrix(test_mat)
print(result_mat)
#       [,1] [,2]  [,3]
# [1,] 0.618 2.000 1.854
# [2,] 4.000 3.090 6.000

for循环实现(仅作参考,不推荐)

如果需要用for循环完成元素替换,可通过双层循环遍历矩阵的行和列索引,逐元素判断后修改:

scale_odd_matrix_loop <- function(mat) {
  if (!is.matrix(mat)) {
    stop("参数错误:仅支持矩阵类型输入")
  }
  # 遍历所有行
  for (i in seq_len(nrow(mat))) {
    # 遍历所有列
    for (j in seq_len(ncol(mat))) {
      val <- mat[i, j]
      # 判断为奇数则修改
      if (val %% 2 == 1) {
        mat[i, j] <- val * 0.618
      }
    }
  }
  return(mat)
}

说明:向量化实现底层为C语言执行,对于大尺寸矩阵的处理速度远高于R层的for循环,生产环境优先选择向量化方案。

内容的提问来源于stack exchange,提问作者r problems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:36:03