Скажем, у меня есть список:
list <- c("<10", "<10", "4", "<10", "5", "6", "<10", "<10")
Этот код удалит все значения "<10": </p>
without_lessthan10 <- list[list != "<10"]
Есть ли способ удалить Speci c число из "<10" с? Например, что я могу использовать, чтобы удалить три из «<10» и остаться с двумя другими? </p>
[1] "4", "5", "6", "<10", "<10"
или
[1] "<10", "4", "5", "6", "<10"
Есть ли способ автоматизировать его (например, "<10" * 3), чтобы мне не пришлось указывать удаляемые индексы? </p>
Я написал несколько запутанную функцию, которая, кажется, выполняет эту работу, но все равно хотел бы знать, может ли кто-нибудь придумать лучший / более компактный способ сделать это.
list1 = c("<10", "<10", "4", "<10", "5", "6", "<10", "<10")
remove_specific_dupes <- function(list, element, num_to_remove) {
element_counter = 0
list_counter = 1
Max=length(list)
new_list = list()
while (list_counter <= Max) {
if (element_counter < num_to_remove){
if (list[list_counter]!=element){
new_list[length(new_list)+1] <- list[list_counter]
} else {
element_counter=element_counter+1
}
} else {
new_list[length(new_list)+1] <- list[list_counter]
}
list_counter=list_counter+1
}
return (unlist(new_list))
}
removed_three_lessthantens_from_list1 <- remove_specific_dupes(list1, "<10", 3)
#removed_three_lessthantens_from_list1 = c("4","5","6","<10","<10")