使用for循环时跳过列

时间:2016-04-12 06:38:19

标签: r plot

我正在创建一个自动在矩阵中创建直方图的函数。但是,如果矩阵中的一列不是整数或数字,则函数会停止,并且不会继续完成其余列。以下是代码

V1 <- rnorm(26)
V2<-letters
V3 <- rnorm(26)
all.data <- matrix(V1, V2, V3)
My_function <- function(x)
  for(i in 1:ncol(x)) {
    hist(x[,i], main = paste("Histogram of",colnames(x)[i]), xlab=paste(colnames(x)[i]))
  }
My_function(all.data)

我需要知道要添加到我的代码中的内容,告诉R跳过非整数/数字的列(例如我的示例中的V2),以便获得我想要的所有直方图并跳过非整数/数字列。

1 个答案:

答案 0 :(得分:1)

最好是实际获得该类,然后仅索引数字

V1 <- rnorm(26)
V2<-letters
V3 <- rnorm(26)
all.data <- data.frame(V1, V2, V3)
My_function <- function(x){
  col<-which(sapply(x,class) %in% c("numeric","integer"))
             for(i in col) {
               hist(x[,i], main = paste("Histogram of",colnames(x)    [i]),    
                    xlab=paste(colnames(x)[i]))
             }}
My_function(all.data)