vec <- c(1, 3, 2, 37)

我想要连续地连接这个向量,这样输出就如下所示:

> output
[[1]]
[1] 1

[[2]]
[1] 1 3

[[3]]
[1] 1 3 2

[[4]]
[1] 1 3 2 37

我编写了一个函数来执行此操作,但它没有给出正确的输出:

myfun <- function(vec){
  output = vector("list", length(vec))
  output[[1]] = vec[1]
  for(i in 2:length(vec)){
    output[[i]] = paste(output[[i - 1]], vec[i])
    output[[i]] = as.numeric(strsplit(output[[i]], " ")[[1]])
  }
  return(output)
}
> myfun(c(1, 3, 2, 37))
[[1]]
[1] 1

[[2]]
[1] 1 3

[[3]]
[1] 1 2

[[4]]
[1]  1 37

推荐答案

要做到这一点,直接的方法是Reduce:

Reduce(f = c,x = vec,accumulate = TRUE)

有一个purrr::accumulate函数可以实现同样的功能:

purrr::accumulate(.x = vec,.f = c,.simplify = FALSE)

(编辑后加入了 comments ,只使用c()作为函数,简单得多.)

R相关问答推荐

如何将y轴设置为在ggplot 2中x=0处与x轴相交?

如何在列表的子元素上使用setName

如何判断某列中由某些行组成的百分比

有没有方法将琴弦完全捕捉到R中的多边形?

根据收件箱中的特定值提取列名

从有序数据中随机抽样

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

为什么在ggplot2中添加geom_text这么慢?

如何直接从R中的风险分数计算c指数?

是否可以创建一个ggplot与整洁判断的交互作用

如何删除最后一个可操作对象

使用for循环和粘贴创建多个变量

如何将Which()函数用于管道%>;%

随机森林的带Shap值的蜂群图

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

如何使用前缀作为匹配来连接数据帧?

如何在使用因子时获得Sankey图的Scale_Fill_Viridis的全范围

如何在Quarto中使用美人鱼图表中的标记来加粗文本

如何合并不同列表中的数据文件,包括基于名称的部分匹配,而不是一对一等价

在鼠标悬停时使用Plotly更改geom_point大小