如何使用索引字符串从R中的数据框或矩阵中提取行

时间:2013-09-18 11:34:19

标签: r

我有以下字符串:"1,34:36,52:58,22:28,82:88,101:102,104:153,120:254,315:368,489:nrow(df)"。是否有某种方法可以使用此字符串来提取与字符串中的数字对应的数据帧(df)的行。

我尝试使用evalget的组合,但这些组合不起作用,并怀疑它们是正确的路线。

示例数据框:

df <- as.data.frame( matrix(rnorm(5000), nrow=500,ncol=10) )

2 个答案:

答案 0 :(得分:2)

您可以使用evalparse的组合:

df <- as.data.frame( matrix(rnorm(5000), nrow=500,ncol=10) )
a <- "1,34:36,52:58,22:28,82:88,101:102,104:153,120:254,315:368,489:nrow(df)"

index <- unlist(lapply(strsplit(a, ",")[[1]], function(x)eval(parse(text=x))))
index
#  [1]   1  34  35  36  52  53  54 ...
#[253] .... 494 495 496 497 498 499 500

答案 1 :(得分:1)

替代解决方案,因为您“知道”了数据框的名称('df'已在您提供的字符串中使用)

df=data.frame(matrix(rnorm(5000), nrow=500,ncol=10))
select_string="1,34:36,52:58,22:28,82:88,101:102,104:153,120:254,315:368,489:nrow(df)"
select_string_total=paste("df[c(",select_string,"),,drop=FALSE]",sep="")
eval(parse(text=select_string_total))