Gnu R:循环重命名变量

时间:2014-05-01 09:18:14

标签: r loops while-loop rename crosstab

我想创建一个循环,以创建15个crosstables,其中一个data.frame(var1)由15个变量和另一个变量(var2)组成,请参阅可以下载的数据here

代码现在能够给出结果,但我想知道如何重命名变量" mytable"所以我得到mytable1,mytable2等

代码:

library(vcd) # for Cramer's V

var1 <- read.csv("~/example.csv", dec=",")
var2 <- sample(1:43)
i <- 1
while(i <= ncol(var1)) {
  mytable[[i]] <- table(var2,var1[,i])
  assocstats(mytable[[i]])
  print(mytable[[i]])
  i <- i + 1
}

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的那样,在使用R时,主动阻止使用mytable1,mytable2等名称作为对象列表。在list中收集所有内容更有用,更清晰。

做你想做的事的一种方法是:

library(vcd) # for Cramer's V
data(mtcars)
var1 <- mtcars[ , c(2, 8:11)]  ##OP's CSV no longer available
var2 <- sample(1:5, 32, TRUE)
mytable <- myassoc <- list()  ##store output in a list
##a `for` loop looks simpler than `while`
for(i in 1:ncol(var1)){
    mytable[[i]] <- table(var2, var1[ , i])
    myassoc[[i]] <- assocstats(mytable[[i]])
}

现在要访问&#34; mytable2&#34;和&#34; myassoc2&#34;你会这样做:

> mytable[[2]]

var2 0 1
   1 4 2
   2 6 6
   3 1 1
   4 2 3
   5 5 2
> myassoc[[2]]
                    X^2 df P(> X^2)
Likelihood Ratio 1.7079  4  0.78928
Pearson          1.6786  4  0.79460

Phi-Coefficient   : NA 
Contingency Coeff.: 0.223 
Cramer's V        : 0.229