我有以下简单的向量:

a = c(1,0,0,1,0,0,0,0)

我想得到一个向量(b),对于a中的每个指标x,如果a[x]是1,我们让它保持原样,如果它是0,我们计算a[x-1]+1,直到下一个1:

b = c(1,2,3,1,2,3,4,5) 

我try 使用map():

map(
  .x = seq(1,(length(a))),
  .f = function(x) {
    a[x] = ifelse(a[x]==1, a[x], a[x-1]+1)
    a})

显然,这不起作用,因为贴图不会更新a向量.如何使用map()完成此操作.甚至可以更新map()之外的内容吗?

推荐答案

如果您只是将其更改为使用superassignment运算符<<-,那么您try 的方法实际上是有效的.

a = c(1,0,0,1,0,0,0,0)

map(
  .x = seq(1,(length(a))),
  .f = function(x) {
    a[x] <<- ifelse(a[x]==1, a[x], a[x-1]+1)
    a})
a

#> [1] 1 2 3 1 2 3 4 5

R相关问答推荐

在GGPLATE中将突出的点放在前面

Ggplot2中的重复注记

plotly hover文本/工具提示在shiny 中不起作用

按多列统计频次

有没有可能用shiny 的书签恢复手风琴面板?

如何移除GGPlot中超出与面相交的任何格网像元

我是否可以使用多个变异项来构建顺序列(标记多个问题)

删除数据帧中特定行号之间的每第三行和第四行

循环遍历多个变量,并将每个变量插入函数R

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

使用相对风险回归计算RR

Ggplot2水平线和垂直线的图例图标不匹配

如何在用`{{ }}`创建的变量上使用整洁 Select ?

向量化sApply函数

使用字符串指定data.table列(S)

如何比较R中每行数据帧中的嵌套列表?

GGPLOT:添加具有不同类别数量的观测数量的标签

ggplot2标记位置未居中

更新表内容时,如何在DT中保留选中的行?

长而宽的格式练习