Это, вероятно, должно работать
mapply(function(x, y, z) if (y > 5) sum(df[x, y:z]) else 0,
seq_len(nrow(df)), df$index, df$index+10)
Или вы можете избежать if
/ else
, умножив на (y > 5)
, поэтому index > 5
будет умножено на 1 (TRUE
), давая sum(df[x, y:z])
, а index <= 5
будет умножено на 0 (* 1011) *) давая 0.
mapply(function(x, y, z) sum(df[x, y:z]) * (y > 5),
seq_len(nrow(df)), df$index, df$index+10)