6

关于 R 最令人沮丧的事情之一是难以通过算法和直观的方式使用名称创建新的数据框变量。

假设我有一个包含一些变量的数据框,并且想在循环中基于它们创建新变量。例如,我想创建新变量,它们是现有变量的累积和,并命名为df$var_cumul

temp<-as.data.frame(cbind(seq(0:10),seq(10:20)))
names(temp)<-c("x","y")
for (i in 1:ncol(temp)) {
  vname<-names(temp)[i]
  assign(paste("temp$",vname,"_cumul",sep=""),cumsum(contrs[,i]))
}

我没有找到作品的排列。这可能是我经常使用 R 遇到的最大问题之一。

有没有一种简单直观的方法来做到这一点?

4

1 回答 1

7

是的,[[运营商:

temp <- data.frame(x = 0:10, y = 10:20)

for (n in names(temp))
  temp[[paste0(n, "_cumsum")]] <- cumsum(temp[[n]])
于 2013-01-14T18:50:49.710 回答