Вместо цикла вы можете использовать функцию imap
из пакета purrr
. При написании кода .x
является объектом, а .y
является именем.
df <- data.frame(a = 1:10, b = 21:30, c = 31:40)
library(purrr)
imap(df, ~paste0("The name is ", .y, " and the sum is ", sum(.x)))
# $a
# [1] "The name is a and the sum is 55"
#
# $b
# [1] "The name is b and the sum is 255"
#
# $c
# [1] "The name is c and the sum is 355"
Это просто более удобный способ написания следующего кода Base R, который дает тот же результат:
Map(function(x, y) paste0("The name is ", y, " and the sum is ", sum(x))
, df, names(df))