#r #if-statement
Вопрос:
У меня есть список list_A
, который я хочу просмотреть в forloop. Однако я хочу перебирать только те элементы, которые являются числами. Пример ниже:
#generate exmaple:
list_A <- list("A","B","C","8","1","5","3","U","2","C","6")
names(list_A) <- c("A","B","C","8","1","5","3","U","2","C","6")
# my attempt
for (i in names(list_A)) {
if (i == ??) {
print("is a number")
}
}
Ответ №1:
Мы можем использовать
sapply(list_A, function(x) is.na(as.numeric(x)))
или с grep
sapply(list_A, function(x) !grepl('\D', x))
A B C 8 1 5 3 U 2 C 6
FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE
Или если length
это всего 1 за list
элемент, unlist
и применить grepl
или as.numeric
сразу
!grepl('\D', unlist(list_A))
[1] FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE TRUE
Или в for
петле
for(l in list_A) {
if(!grepl('\D', l)) print(paste(l, ' is a number'))
}
[1] "8 is a number"
[1] "1 is a number"
[1] "5 is a number"
[1] "3 is a number"
[1] "2 is a number"
[1] "6 is a number"