#r
#r
Вопрос:
Я хочу получить этот вывод (сначала преобразовать данные в логический вектор, затем выполнить цикл через if else, чтобы получить вывод на основе логического сравнения вектора):
10 2 4 8 11 6 5
10 equal to normal.
Caution: 2 is less than normal.
Caution: 4 is less than normal.
8 equal to normal.
11 equal to normal.
6 equal to normal.
5 equal to normal.
Я попробовал это:
m3<-c(10,2,4,8,11,6,5)
m3
str(m3)
mu3<-unlist(m3, recursive = TRUE, use.names = TRUE)
n3<-as.numeric(mu3)
n3
str(n3)
dg3<-5
dg3
class(dg3)
dg1<-as.logical(dg3)
dg1
class(dg1)
dg <-(n3 >= 5)
dg
{cat (m3)}
for (r4 in dg) {
if (r4 == dg.1) {
cat("n", r4,"equal to normal.")
}
else {
cat("n Caution: ", "is less than normal.")
}
}
но я получаю:
10 2 4 8 11 6 5
TRUE equal to normal.
Caution: is less than normal.
Caution: is less than normal.
TRUE equal to normal.
TRUE equal to normal.
TRUE equal to normal.
TRUE equal to normal.
Ответ №1:
Я думаю, вы можете заменить все это на:
cat(m3, "n", ifelse(m3 >= 5, paste(m3, "equal to normal.n"),
paste("Caution:", m3, "is less than normaln")))
#> 10 2 4 8 11 6 5
#> 10 equal to normal.
#> Caution: 2 is less than normal
#> Caution: 4 is less than normal
#> 8 equal to normal.
#> 11 equal to normal.
#> 6 equal to normal.
#> 5 equal to normal.
Комментарии:
1. Большое вам спасибо! .. это сработало безупречно, я все еще заинтересован в использовании моего (для if else) цикла, возможно ли это? если да, то как? Я все еще учусь… Я ценю поддержку!