首页 > 解决方案 > 遍历 rep() 函数中的时间参数并将结果存储在 R 中的新变量中

问题描述

我有一个如下所示的数据框:

> df
 1  2  3  4  5  7  8  9 10 11 12 13 14 15 16 
 1  6  0  0  0  0  0  3  0  0  0  0  0  0  1 

我尝试通过 df 中的条目复制数字 1540 并将它们存储在 length(df) 新变量中。所以,这个循环应该输出 16 个变量,例如

a1b <- c(1540)
a2b <- c(1540,1540,1540,1540,1540,1540)
...

我试图解决这个问题,例如,使用下面的代码,但这不起作用。

df <- P1_2008[1:16]
for(i in 1:15){
  paste0("a",i,"b") <- rep(c(1540), times = df[i])
}

有谁知道如何解决这个问题?

最好的问候,丹尼尔

df的输出是

dput(df)
c(`1` = 1, `2` = 6, `3` = 0, `4` = 0, `5` = 0, `7` = 0, `8` = 0, 
`9` = 3, `10` = 0, `11` = 0, `12` = 0, `13` = 0, `14` = 0, `15` = 0, 
`16` = 1)

标签: rloopsfor-loopreplicate

解决方案


这有帮助吗?

for(i in 1:15){
    assign(paste0("a",i,"b"), rep(c(1540), times = df[i]))
}

如果你想从一个字符串创建一个变量名assign()是你的朋友。第二个参数是一个对象(在此向量中),它被分配给第一个参数中给定的变量名称(作为字符串)。


推荐阅读