带有while功能的Lappy

时间:2018-10-18 17:04:42

标签: function while-loop lapply

我有一个数据集列表,我需要更改变量名称。 某些字符(即“。”)被重复。我想摆脱它们,巧妙地结合while循环和适当创建的函数。

我编写的函数和最后一行代码都不起作用。 欢迎任何帮助!

最小工作示例:

x <- data.frame("WRONG...." = "", "NOT.SO.WRONG." = "", "NOT.WRONG" = "")
myfiles <- list(x)


nopoints <- function(x){
  while (any(grepl('\\.\\.', names(x)))){
    setNames(x, sub('\\.\\.', '\\.', names(x)))}
  return(x)}

myfiles2 <- lapply(myfiles, nopoints)

myfile2 <- lapply(myfiles2, function(x) setNames(x, sub('\\.$', '', names(x))))

所需结果:

myfiles2 <- data.frame("WRONG" = "", "NOT.SO.WRONG" = "", "NOT.WRONG" = "")

1 个答案:

答案 0 :(得分:0)

好的。该功能缺少关键要素

nopoints <- function(x)
  {
  while (any(grepl('\\.\\.', names(x))))
    {
    x <- setNames(x, sub('\\.\\.', '\\.', names(x)))
  }
  return(x)
}

第二个lapply调用实际上也可以在示例中运行,但由于执行顺序的原因,它不在我的实际列表中。