В R, когда я запускаю две функции в lapply
, он запускает первую функцию из всего списка, а затем запускает вторую функцию из списка.Можно ли принудительно запустить обе функции на первом элементе списка, прежде чем переходить на второй элемент?
Я использую функции print
и nchar
для иллюстрации - я написал более сложные функции, которые генерируют data.frame.
lapply(c("a","bb","cdd"), function(x) {
print(x)
nchar(x)
})
результат будет
[1] "a"
[1] "bb"
[1] "cdd"
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
Я хотел бы иметь что-то вроде этого:
[[1]]
[1] "a"
[1] 1
[[2]]
[1] "bb"
[1] 2
[[3]]
[1] "cdd"
[1] 3
это возможно?
Хуан Антонио Роладан Диас и cash2 оба предложили использовать list
, какие виды работ:
lapply(c("a","bb","cdd"), function(x) {
list(x, nchar(x))
})
[[1]]
[[1]][[1]]
[1] "a"
[[1]][[2]]
[1] 1
[[2]]
[[2]][[1]]
[1] "bb"
[[2]][[2]]
[1] 2
[[3]]
[[3]][[1]]
[1] "cdd"
[[3]][[2]]
[1] 3
Но это слишком грязно.
Использование печати дает лучший результат,
lapply(c("a","bb","cdd"), function(x) {
print(x)
print(nchar(x))
})
[1] "a"
[1] 1
[1] "bb"
[1] 2
[1] "cdd"
[1] 3
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
, но есть ли способ подавить nchar
от повторной печати?