2015-10-14 73 views
1
当我与国家数据集练习

这是什么意思的功能(ARG)[参数]

我看到这个方式来展现层次:

myState <-as.data.frame(cbind(state.x77,region=state.region)) 
myState <- cbind(myState,regionName=levels(state.region)[state.region]) 

所以实际regionname将被绑定,但在这里我不知道如何解释这里的levels(state.region)[state.region]。 我不知道为什么levels(state.region)[state.region]会在这里返回长度为50的字符(向量?)。

最初我以为它可以通过循环,投入索引,并获得正确的regionname返回。但突然之间,抛出变量名称就会完美,所以我只是想知道里面发生了什么。

我知道levels(state.region)[3]会显示state.region因子中的第三个水平,这是否有助于解释数字何时被因子本身取代?

我也试着搜索,如果这是之前问过,但没有看到类似的事情或可能我没有得到正确的关键字。

真的很感谢所有帮助

+0

或多或少,它是通过名称而不是索引来获取名称而不是索引。但我不确定这是否是您的问题... – Tensibai

+0

我的问题听起来像这样:“它如何匹配/添加正确的区域名称,如果它没有通过索引但名称?” –

+0

你正在寻找在这两种情况下,事实上(通过索引或名称)子因素是如何对的? – Tensibai

回答

2

让我们通过检查的事情得到这样的:

首先state.region是一个因素,让我们来看看它:

> dput(state.region) 
structure(c(2L, 4L, 4L, 2L, 4L, 4L, 1L, 2L, 2L, 2L, 4L, 4L, 3L, 
3L, 3L, 3L, 2L, 2L, 1L, 2L, 1L, 3L, 3L, 2L, 3L, 4L, 3L, 4L, 1L, 
1L, 4L, 1L, 2L, 3L, 3L, 2L, 4L, 1L, 1L, 2L, 3L, 2L, 2L, 4L, 1L, 
2L, 4L, 2L, 3L, 4L), .Label = c("Northeast", "South", "North Central", 
"West"), class = "factor") 

调用levels给我们的角色该因子的标签的载体:

> dput(levels(state.region)) 
c("Northeast", "South", "North Central", "West") 

其中有趣的是自带的时候你给的因素作为选择这个特征向量,想象它是调用as.integer的因素最简单的方法:

> dput(as.integer(state.region)) 
c(2L, 4L, 4L, 2L, 4L, 4L, 1L, 2L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 
3L, 2L, 2L, 1L, 2L, 1L, 3L, 3L, 2L, 3L, 4L, 3L, 4L, 1L, 1L, 4L, 
1L, 2L, 3L, 3L, 2L, 4L, 1L, 1L, 2L, 3L, 2L, 2L, 4L, 1L, 2L, 4L, 
2L, 3L, 4L) 

所以基本上是那些复合命令结束了做是:

> c("Northeast", "South", "North Central", "West")[c(2L, 4L, 4L, 2L, 4L, 4L, 1L, 2L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 
3L, 2L, 2L, 1L, 2L, 1L, 3L, 3L, 2L, 3L, 4L, 3L, 4L, 1L, 1L, 4L, 
1L, 2L, 3L, 3L, 2L, 4L, 1L, 1L, 2L, 3L, 2L, 2L, 4L, 1L, 2L, 4L, 
2L, 3L, 4L)] 

一个简单的语法来获取特征向量是使用as.vector(state.region)

+0

这真的很有用!!!!,我从来不知道R可以做这样的事情,尤其是复合命令的最后部分。对不起,我还没有投票,或者我应该肯定地投票。 –