嵌套向量处理需求:将age元素运算后覆盖对应gen向量
R嵌套列表的数值计算与替换
原始数据结构
my_list <- list( a = list( age = c(-2702, -2621, -2945), gen = c(109, 109, 105) ), b = list( age = c(-2702, -2702, -2702), gen = c(109, 109, 109) ) )
需求说明
将每个子列表(a、b)中age的元素取绝对值后除以25,再向上取整,用结果覆盖对应子列表的gen字段,保留age字段不变。
预期输出
$a $a$age [1] -2702 -2621 -2945 $a$gen [1] 108 104 117 $b $b$age [1] -2702 -2702 -2702 $b$gen [1] 108 108 108
解决方案
方式1:逐个处理子列表
适合子列表数量较少的场景:
# 更新a的gen字段 my_list$a$gen <- ceiling(abs(my_list$a$age) / 25) # 更新b的gen字段 my_list$b$gen <- ceiling(abs(my_list$b$age) / 25)
方式2:批量处理所有子列表
适合子列表数量较多的场景,通过lapply实现批量操作:
my_list <- lapply(my_list, function(sub_list) { sub_list$gen <- ceiling(abs(sub_list$age) / 25) return(sub_list) })
验证结果
运行上述代码后,打印列表即可得到预期输出:
print(my_list)
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

