2016-04-17 15 views
1

私はこのグリッドマトリックスを有する:表示文字列、

cutoff <- c(pi/48, 2*pi/48, 3*pi/48, pi/12) 
lambda <- c(5:10) 
eta <- seq(1, 1.5, by=0.1) 

grid <- expand.grid(cutoff, lambda, eta) 

、これは私は(シャープベクトルを算出する)関数の後に取得し出力します。

best_grid <- grid[max(sharpe),] 

     cutoff lambda eta 
[17] 0.1963495 5  1.5 

しかし、私はこれを取得したいと思います:

 cutoff lambda eta 
[17] 3*pi/48 5  1.5 
を10

アイデアはありますか?

+0

何をしたいことは、文字列であるため、文字列クラスとおりにする必要があります。後でそれから計算したい場合は、おそらく文字列を数値にデコードする行を書くことができます。 – zacdav

答えて

1

cutoffの値に対応するカットオフ値の別々の文字列ベクトルを作成し、それに一致させることができます。私は説明のために4つのランダムな行を選択しました。 @ HaddE.Nuffの提案と

cutoff lambda eta 
1 pi/48  5 1.0 
2 pi/12  9 1.0 
3 2*pi/48  5 1.2 
4 pi/12  10 1.4 

cutoff.string = c("pi/48", "2*pi/48", "3*pi/48", "pi/12") 

best_grid = grid[c(1,20,50,120),] 

best_grid$cutoff = cutoff.string[match(best_grid$cutoff, cutoff)] 

best_grid 
または、:

cutoff = quote(c(pi/48, 2*pi/48, 3*pi/48, pi/12)) 

grid <- expand.grid(cutoff=eval(cutoff), lambda=lambda, eta=eta) 

best_grid = grid[c(1,20,50,120),] 

best_grid$cutoff = gsub(" ","", as.character(cutoff[-1]))[match(best_grid$cutoff, eval(cutoff))] 
+0

または、 'cutoff - cote(p/48,2 * pi/48,3 * pi/48、pi/12))を持つ両方の世界の中で最高です。 eval(カットオフ); as.character(cutoff [-1]) ' –