在R中的函数中存储列号

时间:2018-02-26 12:40:41

标签: r

我试图将列数存储到x的变量中,  y和z以便我以后可以更改他们的课程。变量看起来像这样:x = c(2,3,4,5,6,7,8)。

相反,当我跑步时,我会收到以下消息:

  

FUN中的错误(X [[i]],...):无效的'长度'参数

NAcorrected.data只是我想要将列类中的更改应用到的数据集。

干杯。

clean.data <- function(x, y, z) {
    factors <- x
    integers <- y
    numerics <- z

    cleaned.data <- NAcorrected.data
    cleaned.data[factors] <- lapply(cleaned.data[factors], factor)
    cleaned.data[integers] <- lapply(cleaned.data[integers], integer)
    cleaned.data[numerics] <- lapply(cleaned.data[numerics], numeric)
    str(cleaned.data)

    return("Function Complete")
}

1 个答案:

答案 0 :(得分:1)

此功能的干净且可重复使用的方法可能如下所示:

clean.data <- function(df, factors, integers, numerics, characters){
  if(!missing(factors)){
    df[factors] <- lapply(df[factors], as.factor)
  }
  if(!missing(integers)){
    df[integers] <- lapply(df[integers], as.integer)
  }
  if(!missing(numerics)){
    df[numerics] <- lapply(df[numerics], as.numeric)
  }
  if(!missing(characters)){
    df[characters] <- lapply(df[characters], as.character)
  }
  return(df)
}

这样你

  1. 可以将其与不同的数据集重用,
  2. 可以灵活选择要更改的变量类型
  3. 将获得更改的数据集作为函数的返回值。