什么类型返回R中的表?

时间:2017-10-31 09:26:57

标签: r types

我在下面写了这行代码。 我想在矩阵中获得最常见的值:

 matrix7 <- matrix(sample(1:36, 100, replace = TRUE), nrow = 1)
    t <- table(matrix7)
    print(t)
    a <- which.max(table(matrix7))
    print(unlist(a))

打印出来:

> matrix7 <- matrix(sample(1:36, 100, replace = TRUE), nrow = 1)

> t <- table(matrix7)

> print(t)

matrix7
 1  2  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 34 35 36 
 4  5  1  5  2  5  1  3  1  4  2  2  2  5  5  1  3  7  2  3  2  3  2  1  4  4  2  2  2  5  2  5  3 
> a <- which.max(table(matrix7))

> print(unlist(a))

19 
18 
> 

我的t变量和a变量的类型是什么, 如何从矩阵中获得最频繁的值?

3 个答案:

答案 0 :(得分:0)

要知道变量使用的“类型”:

class(t)
class(a)

但请注意,您已将matrix7设为tablet <- table(matrix7),而变量ainteger

要获得变量上最常见的元素(在您的情况下为t):

sort(table(as.vector(t)))

答案 1 :(得分:0)

一般来说,如果你想知道&#34;类型&#34; (更恰当地称为 class )对象,使用函数class

> class(t)
[1] "table"

有几种方法可以找到最常见的价值。鉴于您已经计算了which.max,您可以采用相应的name t

> as.numeric(names(t)[a])
[1] 5 ## I have a different random number seed to you :)

请注意,您不能只使用t[a],因为它可能返回一个整数代码(因子是下面的整数,整数可能不是您所期望的)。

在您的示例中,对象a是长度为1的整数向量。 &#34;数据&#34;是18岁,它有&#34;名称&#34; 19.因此,获得最频繁价值的另一种也许更简单的方法是采用names(a)

答案 2 :(得分:0)

您可以使用class()获取R对象的class属性,也可以使用typeof()来获取类型或存储模式。

a的类和类型为'integer't的类为'table',类型为'integer'

请注意,a是一个命名整数,这就是打印2个值的原因。如果您使用names(a),则只返回a的值(作为字符)。

如果您使用which.max(tabulate(matrix7)),则会返回该值而无需进一步更改。

which.max(tabulate(matrix7))
[1] 16

(侧节点:由于代码中没有种子,结果不同,您可以使用set.seed(x)设置它,其中x是整数)。