繁体   English   中英

使用函数和 rbind 迭代 x 次 a

[英]Iterating x Times a with a function and rbind

我对 R 比较陌生(一般来说是编码)。 我想创建一个新顶点(或 1 列数据框)。 这些数据与地质年代有关,这就是数字如此之大的原因。

这个想法是创建一个初步数据集,定义一个函数,该函数获取该数据集的最后一行并为其添加一个值,然后将结果插入回数据集中。

我将如何在一定数量的尝试(例如,n=10)中迭代它? 是否需要 for 循环,如果需要,我将如何实现?


Ages <- matrix(c(10000000,20000000,30000000,40000000),nrow=4,ncol=1)

periods <- function(Ages){
  output <- tail(Ages,n=1)+10000000
  return(output)
}

Ages <- rbind(Ages,periods(tail(Ages,n=1)))

如果您将初始对象保留为向量,然后根据需要将其最后转换为 df,则更容易。 下面是一种使用缩放数字以提高可读性的方法:

Ages <- 1:4 * 100
Ages
[1] 100 200 300 400
last <- Ages[length(Ages)]
last
[1] 400
add_val <- 1000
n_adds <- 10
new_tail <- cumsum(c(last, rep(add_val, n_adds)))
new_tail
[1]   400  1400  2400  3400  4400  5400  6400  7400  8400  9400 10400
Ages2 <- c(Ages[1:length(Ages) - 1], new_tail)
Ages2
 [1]   100   200   300   400  1400  2400  3400  4400  5400  6400  7400  8400  9400 10400

代码可以写得更紧凑,但我想向您展示流程以及如何在 R 中使用强大的矢量化范例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM