我有一个输入 i,我正在制作从 1 到 i 的所有偶数的向量,以便我可以在求和函数中使用。
我收到以下消息,但我不知道为什么:
> i=5
> even_numbers = c(1:i)[c(1:i) %% 2 == 0];
> i_even = even_numbers[1]:even_numbers[tail(even_numbers)];
Error in even_numbers[1]:even_numbers[tail(even_numbers)] :
NA/NaN argument
1 - 发生错误似乎是因为
even_numbers
为空,当您尝试使用 even_numbers[1]:even_numbers[tail(even_numbers)],
创建序列时,您会遇到问题。
2 - 其原因可能是 1 到 5 范围内没有偶数。当对
c(1:i)
计算 i = 5
时,会产生向量 c(1, 2, 3, 4, 5)
。
然而,在这个序列中,只有数字 2 和 4 是偶数。因此,当您使用 c(1:i) %% 2 == 0 过滤偶数时,您将得到 c(2, 4)。
3 - 现在,当您尝试使用
even_numbers[1]:even_numbers[tail(even_numbers)]
创建序列时,它会失败,因为 even_numbers
不是从 1 开始。
用这个改变你的代码
i = 5
even_numbers = c(1:i)[c(1:i) %% 2 == 0]
if (length(even_numbers) > 0) {
i_even = even_numbers[1]:even_numbers[length(even_numbers)]
# Now you can use i_even in your summation function
} else {
# Handle the case when there are no even numbers
i_even = numeric(0) # or any other default value
}
此修改在尝试创建序列之前检查
even_numbers
是否不为空。如果没有偶数, i_even
将设置为空数值向量(例如 numeric(0)
)或您选择的任何其他默认值。