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

如何编写接收方阵作为输入的R函数头?

R自定义方阵处理函数的函数头写法

基础函数头示例

直接在函数参数中定义一个变量名,用来接收外部传入的方阵即可,不需要在参数内做赋值操作:

matrix_operations <- function(matrix_input) {
  # 函数体执行转置、求逆操作
  transposed_mat <- t(matrix_input)
  inverted_mat <- solve(matrix_input) # 注意:仅可逆方阵能求逆,否则会报错
  return(list(transposed = transposed_mat, inverted = inverted_mat))
}

两种使用方式

1. 外部创建方阵后传入(推荐)

先在函数外生成符合要求的方阵,再传入函数,这种方式更灵活,方便测试不同方阵:

# 外部构建2阶方阵
my_matrix <- matrix(data = c(1,2,3,4), nrow = 2)
# 调用函数
output <- matrix_operations(my_matrix)
# 查看结果
output$transposed
output$inverted

2. 函数内部生成方阵(可选)

如果需要让函数直接接收原始数据和行数来生成方阵,可以扩展函数参数,把方阵创建逻辑放到函数体内:

matrix_operations_build <- function(data, nrow) {
  # 内部生成方阵
  input_mat <- matrix(data = data, nrow = nrow)
  # 执行操作
  transposed_mat <- t(input_mat)
  inverted_mat <- solve(input_mat)
  return(list(original_matrix = input_mat, transposed = transposed_mat, inverted = inverted_mat))
}
# 调用示例
output2 <- matrix_operations_build(data = c(5,6,7,8), nrow = 2)

常见错误提醒

不要在函数参数中直接赋值创建方阵(比如function(matrix_input = matrix(...))),这种写法是设置默认参数,如果错误地把它当成接收输入的逻辑,会导致参数定义混乱进而报错。如果需要默认方阵,可以这么写,但这不是强制用户输入的方式:

# 带默认方阵的函数头示例
matrix_operations_default <- function(matrix_input = matrix(c(1,2,3,4), nrow=2)) {
  transposed_mat <- t(matrix_input)
  inverted_mat <- solve(matrix_input)
  return(list(transposed = transposed_mat, inverted = inverted_mat))
}
# 可以直接调用(用默认方阵),也可以传入自定义方阵
matrix_operations_default()
matrix_operations_default(my_matrix)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:30:48