Мы можем l oop по столбцам и сделать это и создать группировку с cut
lst1 <- lapply(df, function(x) split(x, cut(x, breaks = c(5, 10, 20, 30))))
или findInterval
, а затем split
lst1 <- lapply(df, function(x) split(x, findInterval(x, c(5, 10, 20, 30))))
Если бы мы go по способу создания объектов в посте ОП, в глобальной среде было бы 100 * 4, то есть 400 объектов (100 столбцов). Вместо этого это может быть один list
объект.
Объекты можно создавать, но это не рекомендуется
v1 <- c(5, 10, 20, 30)
v2 <- seq_along(df)
for(i in v2) {
for(j in v1) {
assign(sprintf('sample%d_more_than_%d', i, j),
value = df[df[,i] > j,, drop = FALSE])
}
}