【发布时间】:2015-07-09 22:27:03
【问题描述】:
我想创建一个循环,现在将变量添加到数据框中。这些变量应该是现有变量的简单二次形式。
在下面的示例中,我想要 3 个新变量:dat$birds_2 <- dat$birds^2; dat$wolfs_2 <- dat$wolfs^2; dat$snakes_2 <- dat$snakes^2。我想一次对多个变量执行此操作。
dat <- read.table(text = " birds wolfs snakes
3 9 7
3 8 4
1 2 8
1 2 3
1 8 3
6 1 2
6 7 1
6 1 5
5 9 7
3 8 7
4 2 7
1 2 3
7 6 3
6 1 1
6 3 9
6 1 1 ",header = TRUE)
所需的输出 (dat_new) 是(我只显示前 2 行):
dat_new birds wolfs snakes birds_2 wolfs_2 snakes_2
3 9 7 9 81 49
3 8 4 9 64 16
【问题讨论】:
-
你试过你的代码了吗?...(因为它很可能给你你想要的 ;-) 当然除了循环部分)
-
我尝试了 apply 函数,但我只得到了当前变量的值。我是循环新手,所以我不知道应该如何开始。
-
只需传递您的代码:
dat$birds_2<-dat$birds^2; dat$wolfs_2<-dat$wolfs^2 ; dat$snakes_2<-dat$snakes^2,您将在dat中看到 3 个新变量,它们是对应变量的平方值。这里不需要loop或apply函数,^是矢量化的 -
没有经验丰富的程序员会用循环来做这件事。它速度较慢,需要更多的代码行。尝试寻找省略循环的内置 R 函数。
-
如果你想要的不是
dat$birds_2[1]==dat$birds[1]^2等等,你应该在你的问题中添加想要的输出