错误:NA/NaN 参数 - 选择向量中的第一个和最后一个索引

问题描述 投票:0回答:1

我有一个输入 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
r arrays vector indexing
1个回答
0
投票

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)
)或您选择的任何其他默认值。

© www.soinside.com 2019 - 2024. All rights reserved.