2014-11-04 72 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