使用List子集化DataFrame

时间:2014-02-24 03:44:40

标签: r list subset

我正在尝试使用R中生成的样本ID的随机列表作为更大数据帧子集的基础。我意识到我可以直接随机分配,但我想知道下次我需要使用特定的样本名称进行子集。

我有数据(mydata),如下所示:

Species.Obj.ID  Sample  Sample.Name
1                23      George
2                90      Adilade
3                34      Frank
4                23      Steve

我生成了随机数

rand<-sample(1:4, 2, replace=F)

然后尝试使用此处的示例(How to filter a table's row based on an external list?)对数据进行子集化。

subset(mydata,subset= Species.Obj.ID %in% rand)

但我只是回来了完整的原始数据(mydata)。

我想从rand中的随机数中获取数据表中的行。

我非常感谢有关如何纠正此问题的任何建议。谢谢!

1 个答案:

答案 0 :(得分:0)

这种方法比使用subset

容易一些
> yourData <- data.frame(Species.Obj.ID = 1:4, 
                         Sample = c(23,90,34,23), 
                         Sample.Name = c("George", "Adilade", "Frank", "Steve"))

> rand <- sample(1:4, 2, replace = FALSE)

> rand
[1] 2 3  # the random numbers are 2 and 3

> yourData[rand, ]  # the rows shown are rows 2 and 3

  Species.Obj.ID Sample Sample.Name
2              2     90     Adilade
3              3     34       Frank

您甚至可以使用

缩短所有内容
yourData[sample(1:4, 2, replace = FALSE), ]

这将返回2行原始数据的随机样本。