如何在lapply函数内部获取遍历元素的列表索引编号
实现方法
你可以把lapply的遍历对象改为索引序列,在匿名函数内部同时获取索引值和原序列的对应元素,即可完全在lapply内部完成新列添加,不需要额外后续操作。
基础R实现代码
set.seed(123) # 先定义你要遍历的原始向量,方便后续复用 input_vals <- 12:14 a2 <- lapply(seq_along(input_vals), function(i) { # 取出当前索引对应的原始值 x <- input_vals[i] a <- data.frame(value = x + round(rnorm(1), 1)) # 直接在内部给新列赋值为当前索引i a$new <- i return(a) } )
运行后输出结果完全符合你的需求:
> a2 [[1]] value new 1 11.4 1 [[2]] value new 1 12.8 2 [[3]] value new 1 15.6 3
补充说明
如果你不想额外定义input_vals变量,也可以直接把原序列写死在代码里,只是可维护性稍差:
set.seed(123) a2 <- lapply(1:3, function(i) { x <- 11 + i # 等价于12:14[i] a <- data.frame(value = x + round(rnorm(1), 1)) a$new <- i a } )
内容的提问来源于stack exchange,提问作者bill999
相关产品推荐
相关产品推荐

