1

for から複数のオブジェクトを作成するために for を使用しようとしていますが、単なる例です (正確ではありません):

l_gr <- list (1:10, 11:20, 21:30)
for (i in 1:length(l_gr)){
  grp <- NULL
  grp[[i]] <- mean(l_gr[[i]])
    }

これは私が期待しているものではなく、(異なるクラスの) 複数のオブジェクトを出力する必要がありますが、名前は i レベルで異なります。たとえば、ここでは grp1、grp2、grp3 です。これらの各オブジェクトには、特定の i リストに対する関数の出力があります。素朴な質問ですみません。

編集:具体的な例を提供するための応答:

install.packages("onemap")
require(onemap)
data(example.out)
twopts <- rf.2pts(example.out)
all.data <- make.seq(twopts,"all") 
link_gr <- group(all.data)
link_gr$n.groups

ループを開始します

  # without loop: 
# for 1
grp1 <- make.seq(link_gr, 1)
grp1.od <- order.seq(input.seq=grp1, n.init = 5,  subset.search = "twopt", 
    twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE) 


# for 2
grp2 <- make.seq(link_gr, 2)
grp2.od <- order.seq(input.seq=grp2, n.init = 5,  subset.search = "twopt",  
   twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE) 

1:1:link_gr$n.groups の同じプロセス レポート

だから私は for ループと出力オブジェクトを作成したい:

for (i in 1:link_gr$n.groups){
    grp <- NULL
  grp[i] <- make.seq(link_gr, i)
  grp[i].od <- order.seq(input.seq=grp[i], n.init = 5,  subset.search = "twopt",  
      twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE)
    } 
4

1 に答える 1

6

for ループが間違っていることに注意してください。ループ内で設定grp <- NULLすると、反復ごとに結果変数が消去されます。おそらく、必要なものではありません。変数の初期化をループの外に置く必要があります。

また、複数の変数ではなく単一の変数を使用する方がよいことをお勧めします。listオブジェクトは R では非常に柔軟で、さまざまなクラスのオブジェクトに対応できます。できるよ

 require(onemap)
 data(example.out)
 twopts <- rf.2pts(example.out)
 all.data <- make.seq(twopts,"all") 
 link_gr <- group(all.data)
 link_gr$n.groups

   # initialise list outputs
 grp = list()
 grp.od = list()
 for (i in 1:2){
 grp[[i]] <- make.seq(link_gr, i)
 grp.od[[i]] <- order.seq(input.seq=grp[[i]], n.init = 5,  subset.search = "twopt", 
     twopt.alg = "rcd", THRES = 3, draw.try = TRUE, wait = 1, touchdown=TRUE) 
 }

 #check out output
 str(grp)
 str(grp.od)
 grp[[1]]
 grp[[2]

どうしても別の変数を使用する必要がある場合は、 と を検討?assignして?getください。次のようなものが機能します。

 i = 1
 assign(paste("grp", i, sep = ""), grp[[1]])
 exists("grp1")
 str(get(paste("grp", i, sep = "")))
于 2012-06-01T08:50:59.583 に答える