2014-11-04 73 views
-1

我已經寫了這個如何在R中的for循環中寫這個?

pp1<-table(sip$newSS4_1 [sip$newSS4_1==1], sip$HS1C1 [sip$newSS4_1==1]) 
pp1=round(prop.table(pp1,1), digits=3) 
pp1 

我有30個變量做。例如:

pp2<-table(sip$newSS4_2 [sip$newSS4_2==1], sip$HS1C1 [sip$newSS4_2==1]) 
pp2=round(prop.table(pp2,1), digits=3) 
pp2 

pp3 ... pp30等等。我已經在數據幀中有newSS4_1 ... newSS4_30

如何在循環中編寫此代碼?

謝謝。

+0

顯示一些數據以使其具有可再現性 – 2014-11-04 12:41:15

+0

這是一個基本的編程問題,與任何特定語言無關。 – 2014-11-04 13:37:02

+0

對不起。我只是一個初學者,試圖做數據清理。對不起,如果它困擾你的愚蠢問題。@ CarlWitthoft – 2014-11-05 01:50:22

回答

0

看起來好像你在爲自己努力工作。

  1. 不是使用不同的名稱創建30個變量,爲什麼不使用單個列表?
  2. 而不是使用列名,爲什麼不使用列號?

pp <- list() colnums <- grep(names(sip), "newSS4_") # assuming they are in order for (i in 1:30) { cn <- colnums[i] pp[[i]] <- table(sip[,cn ] [sip[,cn]==i], sip$HS1C1 [ sip[,cn]==i ]) }

如果你真的想有不同的變量,你可以使用

assign(paste0("pp", i), value) 

分配到例如pp1,pp2等

+0

感謝您的回覆。因爲我是初學者。我不明白「使用單個列表」是什麼意思?我不使用行名稱。我在使用列名,是的,我可以使用列號。這只是我不知道該怎麼做...... @ dash2 – 2014-11-05 01:53:07

+0

我的意思是你不應該創建30個變量,稱爲'pp1','pp2'等。相反,創建一個名爲'pp'的變量,它是一個列表中有30個元素,'pp [[1]]','pp [[2]]'等等。 – dash2 2014-11-05 06:55:42