Вы правы, и это имеет смысл: y
рассматривается как список, а sapply
перебирает его элементы, которые являются векторами, и мы не можем присвоить имя вектору.Итак, несколько минимальное отклонение от вашего подхода, при котором достигается то, что вы хотите, состоит в том, чтобы использовать mapply
:
toy.func <- function(y, name) {
X11()
plot = plot(density(y), main = name)
return(plot)
}
mapply(toy.func, y, colnames(y))
Он применяется toy.func
, беря один элемент из y
и один из colnames(y)
на каждом шаге.
Другой вариант заключается в одновременном просмотре имен столбцов с предоставлением фрейма данных
toy.func <- function(name, data) {
X11()
plot = plot(density(data[, name]), main = name)
return(plot)
}
sapply(colnames(y), toy.func, y)
Также обратите внимание, что ваша функция может быть упрощена дов этом случае
toy.func <- function(name, data) {
X11()
plot(density(data[, name]), main = name)
}