修改数据框中变量的值

时间:2017-02-08 12:50:52

标签: r loops variables dataframe

[使用R 3.2.2]

我试图使用循环修改数据框中包含的几个变量的值。具体来说,我想将11个变量的所有值除以10.

首先,我尝试为一个变量(bio1)执行此操作:

dataframe0$bio1/10

此命令显示我想在控制台中获取的结果,但不会在数据框中修改它。

在尝试构建循环时,我想出了一些选项:

首先,我创建了一个包含所有变量的向量,然后构建了循环:

vlist <- c("bio1", "bio2", "bio3", "bio4", "bio5", "bio6", "bio7", "bio8", "bio9", "bio10", "bio11")
for (i in vlist) {
  dataframe0$i/10
}

由于前面的代码可能会替换'“..”'以及循环内部的字符串('i'),因此它不起作用,我尝试使用其他循环:

for(var in paste0("bio", 1:11)) {
  dataframe0$var/10
}

我应该怎么做才能执行它并将修改保存在数据框中?提前谢谢!

1 个答案:

答案 0 :(得分:1)

最简单的解决方案可能是

dataframe0[,vlist] <- dataframe0[,vlist] / 10

此循环不是必需的。

示例(为方便起见,使用我自己的一些数据):

> head(websurvey[,c("age", "dur")])
      age dur
17514  68 320
15091  70 503
18152  30 276
7558   39 311
22594  47 161
5108   56 284

> websurvey_test[,c("age", "dur")] <- websurvey[,c("age", "dur")]/10

> head(websurvey_test[,c("age", "dur")])
      age  dur
17514 6.8 32.0
15091 7.0 50.3
18152 3.0 27.6
7558  3.9 31.1
22594 4.7 16.1
5108  5.6 28.4