2016-12-14 5 views
-1

マスターデータフレームから3つのサブセットデータフレームを取得したい。私は以下のコードを実行すると、このようなエラーメッセージが表示され続けます。 [.data.frameR:動的な名前のdata.frameからのforループとサブセットの列の使用

エラー(xは、R、=ドロップを落とし、varsの):

x <- matrix(rnorm(30, 1), nrow = 10, ncol = 26) 
z <- c(1, seq(10)) 

x <- cbind(z, x) #combining 

master = data.frame(x) 
start = c(9,14,21) # subset starts from the column .. 
end = c(14,21,27) # subset ends with the column .. 
grup = c('dm', 'latam', 'ceemea', 'asia') 

for (x in 2:4) { 
    for (i in start) { 
    for (j in end) { 
     if(i<j && j-i <=10) { 
     assign(paste('ret', grup[x], sep='.'), 
      subset(master, select = c(1, (i+1):j))) 
      } 
     } 
     } 
    } 

を選択 未定義の列は、誰かが私を助けることができますか?お願いします。

私の欲求の出力は次のようになります。i + 1:j(i + 1):jと同じではないことを

ret.latam = master[, c(1, 10:14)] 
ret.ceemea = master[, c(1, 15:21)] 
ret.asia = master[, c(1, 22:27)] 
+0

希望の出力は何ですか? –

+0

ret.latam = master [、c(1,10:14)]、ret.ceemea = master [、c(1、15:21)]、ret.asia = master [ 、c(1,22:27)]、 – MDL

答えて

0

注意。

最初のケースは、Rが、その要素のそれぞれにIを追加、Jに直列1が返されるので、をIとj1から系列を追加するために求めています。これにより、マスターデータセットの列数外の値になります。

後者の場合は、あなたがサブセットする値であるJプラスを加算した値から、一連のために求めています。

適切なカッコを配置すると、希望する出力が返されます。

for (x in 2:4) { 
     for (i in start) { 
     for (j in end) { 
      if(i<j && j-i <=10) { 
      assign(paste('ret', grup[x], sep='.'), 
        subset(master, select = c(1, (i+1):j))) 
      } 
     } 
     } 
    } 
関連する問題