【发布时间】:2020-05-30 03:36:57
【问题描述】:
我想运行一个简单的 for 循环并将值存储在列表或向量中。例如:
ex = c(10,11,17)
for (i in (0:length(ex))){
if ex[i] < 12 {
# store the value in a vector
}
}
当我不知道向量的长度并因此无法先定义它时,我该怎么做?
【问题讨论】:
我想运行一个简单的 for 循环并将值存储在列表或向量中。例如:
ex = c(10,11,17)
for (i in (0:length(ex))){
if ex[i] < 12 {
# store the value in a vector
}
}
当我不知道向量的长度并因此无法先定义它时,我该怎么做?
【问题讨论】:
另一个基本 R 选项是使用 na.omit + ifelse
na.omit(ifelse(ex<12,ex,NA))
【讨论】:
你可以在没有for循环的情况下做到这一点:
ex[ex < 12]
#[1] 10 11
或者使用Filter:
Filter(function(x) x < 12, ex)
但是,如果您想使用 for 循环执行此操作,您可以尝试:
count <- 1
result_vec <- numeric()
for (i in ex) {
if (i < 12) {
result_vec[count] <- i
count <- count + 1
}
}
【讨论】:
您可以分配一个最大可能大小的向量并仅部分填充它,然后将其缩小。
ex = c(10,11,17,9,14,1,20,1)
store <- list(length(ex))
for (i in (1:length(ex))){
if(ex[i] < 12){
store[[i]] <- ex[i]
}
}
unlist(store)
[1] 10 11 9 1 1
【讨论】: