关于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最大的问题之一。
有一种简单直观的方法吗?
答案 0 :(得分:5)
是的,[[
运营商:
temp <- data.frame(x = 0:10, y = 10:20)
for (n in names(temp))
temp[[paste0(n, "_cumsum")]] <- cumsum(temp[[n]])