Итак, у меня есть список, каждый элемент которого является числовым вектором. Каждое число колеблется от 0 до 1, и меня интересуют только те, которые больше 0,95, но я должен сохранять их положение на векторе и все остальные числа, поскольку мне нужно построить их позиции относительно друг друга.Замена элементов многоуровневого списка без цикла
l1 = list(c(runif(20)),c(runif(21)),c(runif(22)),c(runif(19)))
поэтому я попытался установить все число ниже 0,95 равно 0, используя lapply так:
l1 = lapply(l1, function(x){x[x<.95]=0})
, но это просто возвращает список равного числа элементов в качестве входного списка (как можно было бы ожидать), но каждый элемент просто равен нулю.
поэтому я попытался его с петлей для примерно так:
for(i in 1:length(l1))
{
l1[[i]][l1[[i]]<.95]=0
}
и работал. Каждый элемент имеет ту же длину, что и входной вектор, и содержит только 0s и числа, которые больше .95
Может кто-нибудь объяснить, почему лапсет не работал. Я бы предпочел не использовать цикл for, поскольку мне кажется, что они медленнее, и реальный набор данных, над которым я работаю, намного больше.
Как всегда,
вся помощь оценена,
Cheers,
Дэви
Блестящий. Спасибо и Джеймсу, и нотам !!! –