私は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
どんな助けでも大歓迎です。