如何使用For循环向data.frame中的所有行添加常量值

时间:2019-02-22 02:59:44

标签: r for-loop

我正在尝试创建一个简单的data.frame,使用FOR LOOP将'1'的值添加到当前data.frame中所有行内的每个值中。

我当前的循环只是返回相同的值。这只是我一个愚蠢的错误吗?

b<-as.data.frame(Base, nrow(length(Base)), ncol(5))
for(i in seq(names(Base))){
  j<-names(Base)[i]
  i + 1
}
b

例如,这些是data.frame Sales中的原始列:

Year  A  B  C  D
2010  50 60 70 80
2011  10 44 28 20
2012  65 75 65 89
...

我的目标是:

Year  A  B  C  D
2011  51 61 71 81
2012  11 45 29 21
2013  66 76 66 90
...

谢谢。

1 个答案:

答案 0 :(得分:0)

这应该为您工作。它使用mutate_ifdplyr中的tidyverse函数,而不是for循环,但是逻辑是相同的。

library(tidyverse)

df <- tibble(
  a = c(1:10),
  b = c(11:20),
  c = c(21:30)
)

df1 <- df %>%
  mutate_if(is.numeric, function(x) x+1)

第一个参数将选择数据中的所有数字列,然后第二个参数指定函数,在这种情况下,该函数仅添加1。

编辑:

我的初始函数还将在您的year列中加1,因此您可能想要这样做

library(tidyverse)

df <- tibble(
  a = c(1:10),
  b = c(11:20),
  c = c(21:30)
)

df1 <- df %>%
  mutate_at(vars(-matches("a")), function(x) x+1)

除非您要在代码中用"a"替换最后一行中的"year"