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

如何用向量v与函数f生成目标矩阵?R语言purrr实现求助

在R中用purrr生成迭代函数应用的矩阵

要实现从初始向量v出发,依次应用函数f生成包含v、f(v)直到f^k(v)的矩阵,你可以用purrr包的iterate或accumulate函数完成,完全不需要依赖函数的闭式解:

方法1:使用purrr::iterate

iterate函数会重复应用指定函数,并返回每一步的结果(包括初始值),正好匹配需求:

library(purrr)

# 定义参数
v <- 1:100
f <- function(x) 2 * x
k <- 3  # 生成到f^3(v),最终矩阵共4列

# 生成迭代结果列表
iterated_results <- iterate(n = k + 1, .f = f, .x = v)

# 转换为矩阵(每列对应一次迭代结果)
result_matrix <- do.call(cbind, iterated_results)

# 验证前几行
head(result_matrix)

方法2:使用purrr::accumulate

如果更习惯用accumulate,可以通过一个长度为k的序列控制迭代次数,同样保留所有中间结果:

library(purrr)

v <- 1:100
f <- function(x) 2 * x
k <- 3

# 从初始向量v开始,迭代应用f共k次
iterated_results <- accumulate(1:k, ~ f(.x), .init = v)

# 合并为矩阵
result_matrix <- do.call(cbind, iterated_results)

两种方法都会生成目标矩阵,每一列依次对应v、f(v)、f(f(v))……直到f^k(v),完全通过函数迭代实现,没有利用f(x)=2x的闭式特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:42:17