循环通过变量向量

时间:2017-11-30 15:01:20

标签: r loops

我有一个流程,我希望一次循环一个变量。

虽然我的流程要复杂得多,但我使用下面的内容来说明基本问题。

假设我想构建一个直方图,并为iris中的每个变量做很多其他的事情。以下内容实现了这一目标:

hist(iris$Sepal.Length, main = paste("Histogram of Sepal.Length"))
hist(iris$Sepal.Width, main = paste("Histogram of Sepal.Width"))
hist(iris$Petal.Length, main = paste("Histogram of Petal.Length"))
hist(iris$Petal.Width, main = paste("Histogram of Petal.Width"))

但是,我的数据框要大得多,而且我的过程要复杂得多。我想把它包裹在如下的循环中(这不起作用,但是我想象的是我的想法)。

name.list <- names(iris)

for (i in 1:4) {

  print(i)
  print(name.list[i])
  print(paste0('iris$', name.list[i]))

  hist(paste0('iris$', name.list[i]), main = paste("Histogram of ", name.list[i]))

  # A bunch of other stuff I need to do with this variable
  # ...
  # ...

}

我在这里缺少什么?如何将此代码包装成一次循环一个?

1 个答案:

答案 0 :(得分:3)

如果将data.frame视为列表,则会更容易。类data.frame的对象是一个列表,因此您可以在此处使用列表选择[[

for( i in names(iris)){
  tmp <- iris[[i]]
  if(is.numeric(tmp))
    hist(tmp, main = paste("Histogram of",i))
}

另请参阅此问题的答案:Pass a data.frame column name to a function