用于在R中查找模式的R命令似乎是错误的

时间:2016-10-02 00:33:23

标签: r

我在数字列表中观看了在YouTube上重新搜索模式的视频。当我输入命令时,它们不起作用。 R甚至没有给出错误信息。向量是

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

然后讲师说使用

temp <- table(as.vector(x)) 

基本上对列表中的所有唯一值进行排序。 R应该从这个命令1,2,3,4,5,6,7,8,9给我,但没有任何事情发生,除非教练这样做,这个列表给出了。然后他说要使用命令,

names(temp)[temp--max(temp)]

基本上应该给我这个:1,3,1,1,1,1,1,1,1其中3表示模式为2,因为它在列表中重复3次。我希望尽可能地使用这些命令,因为教师会详细解释它们。我在做错字还是什么?

1 个答案:

答案 0 :(得分:0)

你有点困惑。

X <- c(1,2,2,2,3,4,5,6,7,8,9)  ## define vector
temp <- table(as.vector(X)) 
  

基本上对列表中的所有唯一值进行排序。

这不完全是这个命令的作用(sort(unique(X))会给出唯一值的排序向量;请注意,在R中,列出向量是不同种类的对象,最好不要互换使用这些词。 table()做的是计算每个唯一值的实例数(按排序顺序);另外,as.vector()是多余的。

  

R应该从这个命令1,2,3,4,5,6,7,8,9给我,但没有任何事情发生,除非教练这样做了这个列表。

如果将结果分配给变量,则R不会打印任何内容。如果要查看变量的值,请单独键入变量的名称:

temp

你应该看到

1 2 3 4 5 6 7 8 9 
1 3 1 1 1 1 1 1 1

第一行是标签(唯一值),第二行是计数。

  

然后他说使用命令names(temp)[temp--max(temp)]基本上应该给我这个:1,3,1,1,1,1,1,1,1其中3表示模式是2因为它是在列表中重复了3次。

没有。您已在temp中存储了计数序列。你应该输入

names(temp)[temp==max(temp)]

(请注意=,而不是-)应打印

[1] "2"

即,这是模式。这里的逻辑是temp==max(temp)为您提供了一个逻辑向量(TRUEFALSE值的向量),TRUE的元素只有temp等于最大值; names(temp)[temp==max(temp)]选择与temp值对应的名称向量元素(上面TRUE打印输出中显示的第一行)...