如何在向量中的一组数字中查找事件

时间:2018-03-19 05:35:20

标签: r

我最近被安排在R编码课程中,我遇到了这个问题。我尝试解决这个问题的每一种方式,我的代码都错了。什么是解决这个问题的最好方法?谢谢。

编写一个R程序,它返回向量中一组值的出现次数。

例如,如果向量为[1,2,3,4,4,5,6,5,7,8,9,10,5]且值集为[5,4],则结果为5,因为在向量中有两次出现值4,并且出现三次价值5。

该函数接受输入:

  • 表示要分析的数字的向量;
  • 表示要计数的数字集的向量。

该函数返回:

  • 表示列表中出现的设置值的数字 要分析的数字。

1 个答案:

答案 0 :(得分:2)

以下是一些可以帮助您创建所需功能的提示。这不是最好的方法,但这种方式帮助我理解了我应该做的事情。我正在谈论的这种方式是将你的问题分解成例子或更小的问题。

首先,让我们将您的矢量存储在对象x中。

x <- c(1,2,3,4,4,5,6,5,7,8,9,10,5)

现在,如果我们输入:

x==4

我们得到:

FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

如果我们输入:

x==5

我们得到了

FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE

如果我们输入:

x==4|x==5

询问x的每个元素是4还是5,我们得到:

FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE

剩下的事情是计算最后一次输出中TRUE的数量。

如果我们输入

as.numeric(x==4|x==5)

我们得到了

0 0 0 1 1 1 0 1 0 0 0 0 1

事实上,我们只需输入

即可
sum(x==4|x==5)

length(x[x==4|x==5])

获得所需的答案5.另一种方法是使用%in%函数。假设我们有

y <- c(4,5)

然后

sum(x %in% y)

还会在x中为我们提供所需的4或5个数字。现在,您仍然需要在sum(x %in% y)x中将y写为函数,以将其用于任意向量x和任意向量y。< / p>