Вам нужна вспомогательная функция, которая сократит ваш вектор. Что-то вроде
shorten_vector <- function(y, max_length = 7){
# NOTE: assumes that there are at least 7 elements in the vector.
y[seq_len(max_length)]
}
затем вы можете сократить векторы в вашем списке с помощью
lapply(your_list, shorten_vector)
Или лучше
lapply(your_list, head, 7) # Thanks Moody
Воспроизводимый пример
# Make an object for an example. A list of length 15
# where each element is a character vector between length 7 and 10
random_length <- sample(7:10, 15, replace = TRUE)
char_list <-
lapply(random_length,
function(x){
letters[seq_len(x)]
})
# utility function
shorten_vector <- function(y, max_length = 7){
y[seq_len(max_length)]
}
lapply(char_list,
shorten_vector)
Бонус
Вы сказали в комментарии к ответу Сонни, что не совсем уверены, как работает lapply
. По своей сути, lapply
- это обертка вокруг цикла for
. Эквивалентный цикл for
будет
for(i in seq_along(char_list)){
char_list[[i]] <- shorten_vector(char_list[[i]])
}
char_list
lapply
просто обрабатывает ограничения итерации для вас и выглядит немного чище на экране.