【发布时间】:2020-08-12 12:52:00
【问题描述】:
我想创建一个函数,给定一个向量,报告另一个带有偶数的向量。
evens <- function(x){
vector <- c()
for (i in 1:length(x)){
if (i %% 2 == 0){
vector[i] <- vector[i] + i
}
}
vector
}
但这会给 x 中的一个数字NULL。
有人知道缺少什么吗? 谢谢
【问题讨论】:
-
x[ x %% 2 == 0]是一种将数字向量x简化为“偶数”值的方法。您的代码有两个问题:i %% 2 == 0正在测试您的号码的 index 是否是偶数,而不是数字本身,您可能需要x[i] %% 2 == 0。其次,您的第一个vector[i]是NA,因此将其添加到任何数字将始终是NA;另外,你不能保证有length(x)的输出,所以分配给vector[i]是有问题的。考虑单独跟踪您向vector添加的元素数量,与i分开。 -
最后一点,我的意思是
j <- 0; for (i in 1:length(x)) { if (...) { j <- j + 1; vector[j] <- x[i]; } }; vector或类似的东西。 -
从 x 获取 偶数 的简短且可能 快速 的版本是
x[!x%%2]。