使用变量(R)定位列

时间:2018-07-24 11:59:46

标签: r for-loop command repeat

我英语不好,对此感到抱歉;)

我目前正在对r编程。

我在R上的数据框(名为data.frame)中有很多列。

该列的名称为1A,1B,2A,2B,3A,3B ....

我想对每列(1A与1B)进行t检验,...

我的命令是

t.test(data.frame$`1A`,data.frame$`1B`, paired=T,alternative="two.sided")

我考虑过使用命令for(i在1:100中),并在列名中使用变量i,但是我不知道如何将变量放入列名中(我尝试过数据。 frame $ i'A'和其他东西,没用...)

如果您有任何想法,我会接受;)

非常感谢

3 个答案:

答案 0 :(得分:0)

尝试:

  for (i in 1:X){
  t<-t.test(data[,paste(i,"A",sep="")],data[,paste(i,"B",sep="")],    
  paired=T,alternative="two.sided")
  print(t)
  }

(我更改了数据中data.frame的名称,所以没有人感到困惑)

答案 1 :(得分:0)

尝试一下

#Create sample dataset

`1A`<-sample(1:1000, 1000)
`1B`<-sample(1:1000, 1000)
`2A`<-sample(1:1000, 1000)
`2B`<-sample(1:1000, 1000)

table1<-data.frame(`1A`,`1B`,`2A`,`2B`)


#Generate nested do loop for all compinations of pairs
for (i in 1:ncol(table1)) {
  for (j in 1:ncol(table1))  {

    txt=paste0("t.test(table1$",names(table1[i]),",table1$",names(table1[j]),",paired=T,alternative='two.sided')")

    t<-eval(parse(text = txt))
    print(t)

  }
}

答案 2 :(得分:0)

非常感谢您的帮助!

我主要使用了Martin方法:这对我有用:

for(i in 1:(ncol(data.frame)/2)){
a<-data.frame[,paste(i,"A",sep="")]
#the problem  was the creation each time of a new data.frame (witch was a, with one colomn, the good one, bur the colomn name didnt change.... i rename it
names(a)[1]<-"A"
b<-data.frame[,paste(i,"B",sep="")]
names(b)[1]<-"B"
t.test(a$'A',b$`B`, paired=T,alternative="two.sided")
}

非常感谢!