2014-05-10 181 views
0

我想創建幾個表,我的數據存儲在其中。 我做了如下:R召回變量名稱

x<-mydata 
splitted<-split(x[,1],x[,2]) 

#Create my function for the tables 
fxdata<-function(){ 
y.row=c("0","1","2","3","4","5") 
yy=c(rep(0,6)) 
w=data.frame(A3=yy,A2=yy,A1=yy,A0=yy) 
rownames(w)<-y.row} 

#Create the tables 
xx<-NULL 
for (i in 1:dim(x)[2]){ 
assign(paste("xx",i,sep=""),fxdata())} 

所以,我創建,例如,3個表:XX1,XX2 XX3和。現在我必須填寫表格,在這裏我遇到了問題。我不知道如何在循環中調用xx1,xx2或xx3。這個想法是在前一個插入循環,以填充所有的表。

#Populate the table 
for (ii in 1:length(splitted[[1]]{ 
#IF 0 
if (splitted[[1]][ii] == "0"){ 
y[1,4]=y[1,4]+1} 
#IF A0 
if (splitted[[1]][ii] == "1A0"){ 
y[2,4]=y[2,4]+1} 
if (splitted[[1]][ii] == "2A0"){ 
y[3,4]=y[3,4]+1} 
if (splitted[[1]][ii] == "3A0"){ 
y[4,4]=y[4,4]+1} 
...} 

的問題是:我有什麼到位「Y」的寫在最後一個循環,以指代XX1,XX2 XX3或?我想寫這樣的東西:

for (i in 1:3) { 
xxi<-1} 

謝謝你的任何意見。

馬爾科

+0

你可以檢查在循環的開始如果xxi爲'nrow(xxi)== 0',如果爲TRUE,'assign('xxi',yourdata)'FALSE'assign('xxi',rbind(get('xxi),yourdata))' – OdeToMyFiddle

+1

I不要得到你想要做的,你的代碼是不可重現的。但我確定你不應該需要'assign'和'for'(只有高級R用戶纔有'assign'的合法用例,對初學者來說這只是代碼寫得不好的標誌,通常他們應該只用一個列表)。 – Roland

回答

0

羅蘭認爲,做這樣的事情:

mydata<-list(xx1,xx2,xx3) 
for (j in names(mydata)) { 
    mydata$j <- [your function stuff] 
} 

你寫什麼,順便說一句,是更好地實現通過switch