2

次の文字列があります: "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) )
4

2 に答える 2

2

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
于 2013-09-18T11:48:54.277 に答える
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))
于 2013-09-18T12:02:29.170 に答える