1

ネストされたforループを実行して、スクレイプで使用するステムのリストを作成するのに問題があります。単純なデータフレームには、写真の名前と数の2つの変数が含まれています。コードに次のような語幹のリスト/マトリックスを吐き出させたい:

アレックス/1アレックス/2アレックス/3アリス/1....。

行を1つずつ実行するときに機能させることはできますが、残念ながら、すべての名前のループを介してそれを実行する方法を理解できません。

どんな助けでも大歓迎です、そしてうまくいけば、この構造でHTMLをこすりたい人によって使われるでしょう!

これまでの私のコードは次のとおりです。

stems<-list()
for(Name in data$Names){
    for(Photo in data$Photos)
    stems[Photo]<-print(paste(Name,1:data$Photos,sep="/"))
}
stems.matrix<-as.matrix(stems)
4

2 に答える 2

3

これは、あなたの望むことですか?リストが欲しいと言ったのは知っていますが、文字のベクトルも同じくらい簡単だと思います。

#I'm guessing your data looks something like this...
data <- data.frame( Names = c("Simon" , "Alex" , "Ben", "Dave") , Photos = c( 4 , 3 , 2 , 3) , Misc = c( 4 , 3 , 4 , 4 ) )

#Use apply rather than nested loops
stem.list <- unlist( apply( data , 1 , function(x) { i <- 1:x[2]; paste( x[1] , i , x[3] , sep ="/") } ) )

それは...

> stem.list
 [1] "Simon/1/4" "Simon/2/4" "Simon/3/4" "Simon/4/4" "Alex/1/3"  "Alex/2/3"  "Alex/3/3" 
 [8] "Ben/1/4"   "Ben/2/4"   "Dave/1/4"  "Dave/2/4"  "Dave/3/4" 
于 2013-02-19T22:52:33.383 に答える
0
 dat <- data.frame(name=letters[1:4],photo=1:4)
 dat.ex <- expand.grid(dat)
 paste(dat.ex[,1],dat.ex[,2],sep='/')
 [1] "a/1" "b/1" "c/1" "d/1" "a/2" "b/2" "c/2" "d/2" "a/3" "b/3" "c/3" "d/3" "a/4" "b/4" "c/4" "d/4"
于 2013-02-19T23:00:08.750 に答える