将FOR循环转换为在R中应用

将FOR循环转换为在R中应用,r,apply,R,Apply,我正在努力学习如何使用apply,但有点卡住了。此循环将所有列(前四列除外)转换为它们的累计和 有人能帮我吗?谢谢 for (i in seq_along(newbuilds.byfuel.bydate)) { if (i >= 5) { newbuilds.byfuel.bydate[i] <- cumsum(newbuilds.byfuel.bydate[i]) } } for(i按顺序排列(newbuilds.byfuel.bydate)){ 如果(i>=5

我正在努力学习如何使用apply,但有点卡住了。此循环将所有列(前四列除外)转换为它们的累计和

有人能帮我吗?谢谢

for (i in seq_along(newbuilds.byfuel.bydate)) {
  if (i >= 5) {
    newbuilds.byfuel.bydate[i] <- cumsum(newbuilds.byfuel.bydate[i])

  }
}
for(i按顺序排列(newbuilds.byfuel.bydate)){
如果(i>=5){

newbuilds.byfuel.bydate[i]如果您的对象是
data.frame
,我会这样做:

## dummy dataset
x <- mtcars
或者,在未删除的列上循环:

x[-(1:4)] <- lapply(x[-(1:4)], cumsum)

x[-(1:4)]如果您的对象是
data.frame,我会这样做:

## dummy dataset
x <- mtcars
或者,在未删除的列上循环:

x[-(1:4)] <- lapply(x[-(1:4)], cumsum)

x[-(1:4)]Is
newbuilds.byfuel.bydate
a data.frame?请确保在请求帮助时提供一个。这样会更容易帮助您。Is
newbuilds.byfuel.bydate
a data.frame?请确保在请求帮助时提供一个。这样会更容易帮助您。为了避免键入两次列索引,我将其定义为单独的索引变量或执行一些奇怪的操作,例如
do.call(transform,c(list(x),lappy(x[-(1:4)],cumsum))
看起来也可以这样做:
transform(x,lappy(x[-(1:4)],cumsum))
这似乎对col没有影响…?你是对的。我犯了一个新手错误,没有重新运行我的整个脚本。为了避免键入两次col索引,我要么将其定义为一个单独的变量,要么执行一些奇怪的操作,如
do.call(transform,c(list(x),lappy(x[-(1:4)],cumsum))
看起来也可以这样做:
transform transform(x,lappy(x[-(1:4)],cumsum))
这似乎对cols没有任何影响。你是对的。我犯了一个新手错误,没有重新运行我的整个脚本。