在R中,你如何计算字符向量?

时间:2010-09-09 08:27:11

标签: r

我在R中使用了样本函数来生成100个公平硬币翻转的样本,这是我使用的命令。

fair.coin = c("heads" = 0.5, "tails" = 0.5)

然后,

x <- sample(fair.coin, size = 100, replace = TRUE)
> x

tails tails tails heads tails tails tails heads heads tails heads heads tails tails

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

heads tails heads tails tails tails tails heads heads heads heads tails heads tails 

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

tails tails tails heads heads heads heads heads heads heads tails heads tails tails 

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

tails heads tails heads heads heads tails tails heads tails tails heads heads heads 

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

heads tails tails tails heads heads tails tails tails heads heads heads heads tails 

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

tails heads heads heads tails tails tails heads heads heads tails heads tails tails 

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

heads tails heads heads tails heads tails tails tails heads heads heads tails heads 

  0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5   0.5 

tails tails 

  0.5   0.5 

这就是我现在所得到的。我想找到这个样本中的头部总数,我该怎么做?我尝试了sum(x>0.5)x[-tails]等等,他们都在计算数字(因为它们是公平的,所有r都是0.5),而不是向量的名称。 R中是否有任何函数可以用来计算这100个样本中的头数?

提前致谢!

2 个答案:

答案 0 :(得分:9)

不知道你要做什么,但这适用于你的数据

length(x[names(x)=="tails"])
[1] 45

> table(names(x))

heads tails 
   55    45 

尽管如此,您的数据对我来说仍然很令人费解。它甚至不是字符向量,它是带有名称的数字向量。你是否有可能尝试这样的事情:

> x <-  sample(c("heads","tails"),
+        size=100,
+        replace = TRUE,
+        prob=c(0.5,0.5)
+       )

> length(x[x=="tails"])
[1] 43

> table(x)
x
heads tails 
   57    43 

答案 1 :(得分:4)

table(names(x))

顺便说一句,你最好使用,

x <- sample(c("heads","tails"),size=100,replace=T)

生成此数据。然后你可以使用table(x)