for(i in 1:length(a.sub)){
df[i] <- y[a.sub[i]]
}
может стать
df <- y[a.sub]
, ни a.sub, ни df не должны быть предварительно определены и, следовательно, ...
x <- c(12, 27, 21, 16, 12, 21, 18, 16, 20, 23, 21, 10, 15, 26, 21, 22, 22, 19, 26, 26)
y <- c(8, 10, 7, 7, 9, 5, 7, 7, 10, 4, 10, 3, 9, 6, 4, 2, 4, 2, 3, 6)
a <- c(20,25)
for(j in 1:length(a)){
a.sub <- which(x >= a[j])
df <- y[a.sub]
print(df)
}
Это может быть сокращеноdf не нужен, если вы все равно печатаете подмножество y.Просто распечатайте это напрямую.А селектор настолько короткий, что ни одной строки не запутает.Кроме того, зачем использовать длину а и индекс .. цикл через напрямую.Так что это может быть ...
a <- c(20,25)
for(ax in a){
print( y[ which(x >= ax) ] )
}