Итак, у меня есть список, каждый элемент которого представляет собой числовой вектор. Каждое число колеблется от 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, вот так:
for(i in 1:length(l1))
{
l1[[i]][l1[[i]]<.95]=0
}
и это сработало. Каждый элемент имеет ту же длину, что и входной вектор, и содержит только 0 и числа больше, чем .95
Может кто-нибудь объяснить, почему бабло не работает. Я бы предпочел не использовать цикл for, так как меня убеждают, что они медленнее, а реальный набор данных, над которым я работаю, гораздо больше.
Как всегда,
вся помощь приветствуется,
Cheers,
Дэви