我在下面写了这行代码。 我想在矩阵中获得最常见的值:
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
变量的类型是什么,
如何从矩阵中获得最频繁的值?
答案 0 :(得分:0)
要知道变量使用的“类型”:
class(t)
class(a)
但请注意,您已将matrix7
设为table
,t <- table(matrix7)
,而变量a
为integer
。
要获得变量上最常见的元素(在您的情况下为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是整数)。