0

我是世界的新手R,并且有一个相当简单的问题,但这让我很困扰。

我有很多数字:

abc=rnorm(100, mean=0, sd=1)

我想知道这些数字中有多少是正数。我试过了:

length(which(abc>0) 

但这没有用。有什么建议么?

4

3 回答 3

5

你想要的是:

sum(abc > 0)

先试试abc > 0。这将为您提供所有abc正值的布尔向量 TRUE,两者abc的长度和布尔向量相同。由于 TRUE 等于 1 并且 FALSE 等于 0,因此该向量的元素之和将为您提供所需的计数。这是 R 中的一个常见技巧,这就是为什么我觉得它可能是您的情况的答案。

另一个有用的技巧是做同样的事情,但使用mean, 例如mean(abc > 0)这会给你一个比例的值为abc正的值。

您最初的方法也可以工作(提供正确的括号),但根据我的口味 which() 不是用于此类用途的功能。

于 2013-04-18T07:36:02.197 回答
2

另一种选择是在table这里使用,给你正数和负数的数量:

table(abc > 0 )
FALSE  TRUE 
   45    55
于 2013-04-18T08:18:34.547 回答
1

我认为这是你应该尝试的:

length(abc[abc>0])

在 R 中,一切都以矩阵的形式输入,这就是我们使用[]而不是().

于 2013-09-16T11:48:27.967 回答