对于R中的循环列名

对于R中的循环列名,r,for-loop,data-manipulation,R,For Loop,Data Manipulation,我正在尝试循环每个选定列以获取表。 非常感谢 my.df <- mtcars[,c(2:5)] colnames(my.df) <- c("A.1", "A.2", "A.3", "A.4") nam <- NULL; my.tables <- NULL for(i in 1:4) { nam[i] <- paste("A.", i, sep = &quo

我正在尝试循环每个选定列以获取表。 非常感谢

  my.df <- mtcars[,c(2:5)]
colnames(my.df) <- c("A.1", "A.2", "A.3", "A.4")

nam <- NULL; my.tables <- NULL
for(i in 1:4) { 
  nam[i] <- paste("A.", i, sep = "")
  my.tables[i] <- table(my.df$nam[i])
}
nam
my.tables

以下是使用purrr包的快速解决方案:

这是一个for循环解决方案

# reserve space for the variables beforehand
nam <- character(4)
my.tables <- vector("list", length = 4)
for(i in 1:4) {
  nam[i] <- paste0("A.", i)
  my.tables[[i]] <- table(my.df[[ nam[i] ]])
}
nam
my.tables
这样,您可以通过以下任何等效方式访问结果

my.tables2$A.1
my.tables2[["A.1"]]
my.tables2[[1]]
而没有指定名称属性,仅由列表成员编号指定

my.tables[[1]]

lapplymy.df,table?谢谢,但在本例中,我尝试使用列名称my.df$a.1设置for循环
my.tables2 <- lapply(my.df, table)
all.equal(my.tables, my.tables2)
#[1] "names for current but not for target"
my.tables2$A.1
my.tables2[["A.1"]]
my.tables2[[1]]
my.tables[[1]]