连接文本以形成要在表中使用的列名

时间:2012-10-08 16:09:25

标签: string r histogram

我正在尝试使用循环来创建直方图,其中列名引用通过更改列名的字符串而作为循环的结果而更改。我想获得column1column2column3column4的四个直方图。 (在我的实际示例中,列未命名为第1列,但我希望它清楚)。

For (i in 1:4){
  hist( paste("dataset$column" +i )  , main ="title") 
}

当我尝试使用粘贴时,我会收到x必须为数字的错误,但如果我只使用一个作为支票来尝试

hist( dataset$column1), main = "title")  

它工作正常,所以它不是数据本身。

4 个答案:

答案 0 :(得分:2)

您可以使用apply

set.seed(001)
DF <- data.frame(column1=rnorm(100), 
                 column2=rnorm(100),
                 column3=rnorm(100),
                 column4=rnorm(100))

apply(DF, 2, hist)  # It produces one hist for each column

使用for循环

for(i in 1:ncol(DF)){
  hist(DF[, paste('column', i, sep='')],
       main=paste('Histogram', i))

}

答案 1 :(得分:2)

在这些情况下,我通常使用lapply()。这是一个例子,我也使用gsub()来稍微提高名称。

set.seed(001)
DF <- data.frame(Funky.Name.1 = rnorm(100),
                 Funky.Name.2 = rnorm(100),
                 Whoo.Whoo = rnorm(100),
                 Yee.Haw = rnorm(100))
lapply(names(DF), 
       function(x) hist(DF[, x], main = gsub("\\.", " ", x), xlab="Value"))

演示

par(mfrow = c(2, 2))这样我们就可以在一个2x2的网格中拼凑四个图。

# par(mfrow = c(2, 2)) # 2x2 layout of all four Histograms
# lapply(names(DF), 
#        function(x) hist(DF[, x], main = gsub("\\.", " ", x), xlab="Value"))
# When you're done: dev.off()

结果:

enter image description here

答案 2 :(得分:1)

  1. 我非常怀疑这个:

    hist( dataset$column1), main = "title")  
    

    有效 - 你有一个额外的支架。

  2. 如果你这样做:

     paste("dataset$column" +i )
    

    您将获得一个字符串“dataset $ column1”等。您需要选择所需的列:

     for (i in 1:4) {
        hist(dataset[,i]  , main ="title") 
     }
    

    选择第1,2,3和1列; 4。

  3. 或者你可以:

     for (i in 1:4) {
        hist(dataset[[paste0("column",i)]]  , main ="title") 
     }
    

答案 3 :(得分:1)

for函数未大写。并且“+”运算符不适用于字符值。并且您不能以您尝试的方式将数字附加到列名称“词干”,但您可以计算“[[”运算符的参数,这是“$”运算符的真实含义。这可能会起作用,具体取决于“数据集”的列名是什么:

for (i in 1:4) {
  hist( dataset[[ paste0("column", i ) ]]  , main ="title") 
}