我有一个数据集列表,我需要更改变量名称。 某些字符(即“。”)被重复。我想摆脱它们,巧妙地结合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" = "")
答案 0 :(得分:0)
好的。该功能缺少关键要素
nopoints <- function(x)
{
while (any(grepl('\\.\\.', names(x))))
{
x <- setNames(x, sub('\\.\\.', '\\.', names(x)))
}
return(x)
}
第二个lapply调用实际上也可以在示例中运行,但由于执行顺序的原因,它不在我的实际列表中。