如何在for循环中为列名添加别名?

时间:2019-01-17 07:34:48

标签: r

我正在做一个函数,我想以一种特殊的方式调用一列。

初始化数据

a <- c(1,2,3,4,5)
b <- c(6,7,8,9,10)
c <- c(1,2,3,4,5)
d <- c(6,7,8,9,10)
df <- as.data.frame(cbind(a,b,c,d))

表格功能的调用列

Func <- function(df){
  X <- df
  Y <- names(M)

  for(i in 1:2){ 
    table(X$___,X$___)
}}

麻烦是我不知道如何调用列。

我希望它在循环中与table(X$a, X$b)等效。

我尝试了此操作,但没有成功

  for(i in 1:2){ 
        Q <- Y[i]
        W <- Y[j]
        table(X$Q,X$W)
}}

对于我正在使用的函数来说,有必要以table(X$a, X$b)的形式创建表,而我不知道如何在for循环中实现该功能吗?

3 个答案:

答案 0 :(得分:1)

您需要使用两个[[来获取列的内容:

 df <- datasets::mtcars
 for (i in 1:2) df[[i]]

这也适用于列名

for (i in names(df)) df[[i]]

虽然不确定您要实现的目标。您也可以这样做:

lapply(df[1:2], table)

答案 1 :(得分:1)

您可以使用列索引并在函数中使用它,而不用使用列名来调用table,因此您不必担心如何调用列。

替换for循环并使用

table(df[1:2])

这将为您带来预期的结果。

答案 2 :(得分:1)

您还可以使用列索引遍历col。在以下代码中,您可以遍历iris数据集列:

for(i in 1:length(colnames(iris))){
  print(iris[,i]) # to get single column
  print(iris[,c(i,i+1)]) # to get multiple column data
}