Я немного смущен относительно того, работает ли lapply в списке или на векторе. См два примера нижеlapply работает над массивом или одним элементом?
Здесь средняя функция применяется над массивом чисел, то есть, от 1 до 5
x = list(a=1:5, b=rnorm(10)) x #$a #[1] 1 2 3 4 5 # #$b #[1] -0.57544290 0.51035240 0.43143241 -0.97971957 -0.99845378 #[6] 0.77389008 -0.08464382 0.68420547 1.64793617 -0.39688809 lapply(x,mean) #$a #[1] 3 # #$b #[1] 0.1012668
Но здесь, функция runif наносится поверх каждого отдельного элемента массив
x = 1:4 lapply(x,runif) #[[1]] #[1] 0.5914268 #[[2]] #[1] 0.6762355 0.3072287 #[[3]] #[1] 0.8439318 0.8488374 0.1158645 #[[4]] #[1] 0.8519037 0.8384169 0.2894639 0.4066553
Мой вопрос, что именно делает lapply работать? массив или отдельный элемент? И как это правильно выбрать в зависимости от функции?
'lapply' работает над первым уровнем элементов, составляющих объект. В случае 1), это каждый элемент «list», в 2) это каждое значение в «vector». – thelatemail
@thelatemail, спасибо. Я не понял термин «первый уровень элементов». Не могли бы вы объяснить? – IAMTubby
Чтобы использовать аналогию, если у меня есть 4 шоколадных батончика ('1: 4'), лаппель будет работать на каждом баре. Если у меня есть 2 коробки, содержащие шоколадные батончики ('list (1: 2,3: 4)'), то на каждом ящике будет работать lapply. – thelatemail