在R语言中基于重复向量生成含递增倍数列的数据框
解决方案
直接用R的向量运算结合sapply就能高效实现,不需要复杂循环:
# 初始化V1 V1 <- rep(10000, 10973) # 设置目标列数 target_cols <- 17 # 生成所有列并转为数据框 result_df <- as.data.frame(sapply(1:target_cols, function(multiplier) V1 * multiplier)) # 给列命名为V1到V17 colnames(result_df) <- paste0("V", 1:target_cols)
说明
- 向量运算在R中是原生优化的,比手动循环效率高得多,尤其适配你这种10973行的大样本场景
sapply会自动遍历1到17的乘数,每个乘数和V1做逐元素乘法生成对应列,最后统一转成数据框- 用
paste0快速生成规范的列名,避免手动逐个命名
如果你偏好更简洁的矩阵操作写法,也可以用:
V1 <- rep(10000, 10973) target_cols <- 17 result_df <- as.data.frame(outer(V1, 1:target_cols, "*")) colnames(result_df) <- paste0("V", 1:target_cols)
outer函数会直接生成V1和1到17的乘积矩阵,转成数据框后再设置列名即可。
内容的提问来源于stack exchange,提问作者Rebecca
相关产品推荐
相关产品推荐

