关于通过字符类进行子集化的快速问题

时间:2011-01-24 20:58:03

标签: r

我认为这是一个超级快速的事情,但我想我会问,因为我不能为我的生活记住怎么做...

假设我有一个data.frame(称之为DF),其中包含以下标题:"Blah""Bleh""Meh"
我还有一个字符类向量foo,其元素与DF的标题相同。

Blah <- rnorm(10)
Bleh <- runif(10)
Meh <- rnorm(10)
DF <- data.frame(Blah,Bleh,Meh)
foo <- c(rep("Blah",3),rep("Bleh",3),rep("Meh",3))

我想按照DF中的第i个元素执行以下操作:子集foo。我认为 - DF$foo[1] - 会起作用,但事实并非如此。

我知道我可以使用names==进行分组,但我认为有更短的(1行)方式?

3 个答案:

答案 0 :(得分:3)

DF$foo[1]尝试返回名为foo的列的第一个元素(不存在)。你想要DF[foo[1]]

答案 1 :(得分:2)

subset(DF, select=foo[3])
              Blah
1   0.814939149951
2  -0.800644571486
3  -0.424080059851
4   1.012792429940
5   1.291888735720
6   0.642523425131
7   0.537486547429
8   0.315031122082
9  -0.296439716108
10  0.372453578695

答案 2 :(得分:1)

这是你想要的吗?

DF[ ,foo][1]

啊,Joshua在我打字时发布了......您可以选择列的区域,例如:

DF[1:3,foo][1]