我有以下字符串:"1,34:36,52:58,22:28,82:88,101:102,104:153,120:254,315:368,489:nrow(df)"
. 是否有某种方法可以使用此字符串来提取与df
字符串中的数字相对应的数据帧 ( ) 的行。
我尝试过使用 and 的组合,eval
但get
这些都不起作用,并且怀疑它们是正确的路线。
示例数据框:
df <- as.data.frame( matrix(rnorm(5000), nrow=500,ncol=10) )
我有以下字符串:"1,34:36,52:58,22:28,82:88,101:102,104:153,120:254,315:368,489:nrow(df)"
. 是否有某种方法可以使用此字符串来提取与df
字符串中的数字相对应的数据帧 ( ) 的行。
我尝试过使用 and 的组合,eval
但get
这些都不起作用,并且怀疑它们是正确的路线。
示例数据框:
df <- as.data.frame( matrix(rnorm(5000), nrow=500,ncol=10) )
您可以使用eval
和的组合parse
:
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
替代解决方案,因为您“知道”数据框的名称(您提供的字符串中已经使用了“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))