r - 在循环中创建多个变量
问题描述
有没有办法在循环中创建多个变量。例如,如果我的数据框中有一个名为“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 等。
最好的祝福
迪帕克
解决方案
您可以使用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
或purrr
与map_dfc
mydf[paste0('var', n)] <- purrr::map_dfc(n, ~mydf$mynum^.x)
推荐阅读
- python - 通过使用 Beautiful Soup、Selenium 和 Pandas 提取 div 类中的值来抓取价格
- terraform - Terraform 模块子目录放置
- android - 依赖失败:在项目“应用程序”中,已解决的 Google Play 服务库依赖项依赖于另一个确切版本
- docker - 在 Docker 文件部署中使用 Elastic Beanstalk 环境变量
- ruby-on-rails - 如何使用所有关联表删除 thredded gem?
- python - Box Python SDK 'NoneType' 对象不可调用
- python - 如何将python数据库中的数据写入excel电子表格?
- python - django url 跟随文件夹系统
- java - Java Tile Map 块坐标
- r - 从调度返回 R 脚本日志