首页 > 解决方案 > 在循环中创建多个变量

问题描述

有没有办法在循环中创建多个变量。例如,如果我的数据框中有一个名为“test”的变量,如何创建一系列名为“test1”、“test2”、...“testn”的新变量,这些变量定义为测试^1,测试^2...测试^n

举个例子

mynum <- 1:10
myletters <- letters[1:10]
mydf <- data.frame(mynum, myletters)

mydf
   mynum myletters
1      1         a
2      2         b
3      3         c
4      4         d
5      5         e
6      6         f
7      7         g
8      8         h
9      9         i
10    10         j

for (i in 1:5)
    {paste0(var, i) <- mynum^i
    }

但它出错了。

我正在尝试创建变量,如 var1、var2、var3 等,它们是 mynum^1、mynum^2、mynum^3 等。

最好的祝福

迪帕克

标签: r

解决方案


您可以使用lapply创建新列并使用do.call+组合它们cbind

n <- 1:5
mydf[paste0('var', n)] <- do.call(cbind, lapply(n, function(x) mydf$mynum^x))
mydf

#   mynum myletters var1 var2 var3  var4   var5
#1      1         a    1    1    1     1      1
#2      2         b    2    4    8    16     32
#3      3         c    3    9   27    81    243
#4      4         d    4   16   64   256   1024
#5      5         e    5   25  125   625   3125
#6      6         f    6   36  216  1296   7776
#7      7         g    7   49  343  2401  16807
#8      8         h    8   64  512  4096  32768
#9      9         i    9   81  729  6561  59049
#10    10         j   10  100 1000 10000 100000

purrrmap_dfc

mydf[paste0('var', n)] <- purrr::map_dfc(n, ~mydf$mynum^.x)

推荐阅读