1

私はRの関数から離れていましたが、それがより良い習慣であると判断しました. 今、私はこの問題を抱えています。私は自分の関数を書きます:

 myFunction<-function(tab){ #takes tabular input
     inP<-c()
     for (x in 1:dim(tab)[1]){ #iterate over rows
         rname<-rownames(tab)[x] #rownames as output
         if(rname<5) inP<-c(inP,rname) #trivial work
     }
     return(inP) #return the vector made above
 }

 tablist<-as.list(paste("tab",1:4,sep=""))
 for (x in 1:length(tablist)){
     tablist[[x]]<-table(c(1:10),c(1:10))
 }

 inPvec<-c() #predefine vector to concatenate results into
 for (x in 1:length(tablist)){ #tabs holds multiple tables as a list
      myFunction(tablist[[x]]) #run myFunction for each table held in tabs
      inPvec<-c(inPvec,inP) #concatenate results from each iteration
 }

 inP
 #NULL

 myFunction(tablist[[1]])
 #[1] "1" "2" "3" "4" "10"

実行可能な例として編集: 怠惰の謝罪。

例のループを実行すると、inP は inPvec と同様に NULL を返します。関数で単一のテーブルを実行すると、正しい値が返されます。ただし、inPは呼び出し時にNULLなので、これが私の問題だと思います。

関数を反復するループのすべてを単一のベクトルに返すようにしたい.

 inPVec
 #[1] "1" "2" "3" "4" "10" "1" "2" "3" "4" "10" "1" "2" "3" "4" "10" etc

どんな助けでも大歓迎です。

4

1 に答える 1