我有一个数据框列表:
mylist<-list(df1=data.frame(var1=c("a","b","c"), var.2=
c("a","b","c")), df2= data.frame(var1 = c("a","b","c"),
var..2=c("a","b","c")))
我想删除列表中每个数据框的列标题中的句点和空格。输出看起来像:
mylist<-list(df1=data.frame(var1=c("a","b","c"), var2=
c("a","b","c")), df2= data.frame(var1= c("a","b","c"),
var2=c("a","b","c")))
我尝试过以下方法:
cleandf <- lapply(ldf, function(x) x[(colnames(x) <- gsub(".", "",
colnames(x), fixed = TRUE))])
使用Base R setNames
:
lapply(mylist, function(x) setNames(x, gsub("\\.", "", names(x))))
或与tidyverse
:
library(tidyverse)
map(mylist, ~rename_all(.x, str_replace_all, "\\.", ""))
输出:
$df1
var1 var2
1 a a
2 b b
3 c c
$df2
var1 var2
1 a a
2 b b
3 c c
我重命名每个数据框中的列,然后返回数据框。正如here所解释的那样,在此期间需要双反斜杠作为转义字符。
lapply(mylist, function(x){names(x) <- gsub("\\.", "", names(x));x})
# $`df1`
# var1 var2
# 1 a a
# 2 b b
# 3 c c
#
# $df2
# var1 var2
# 1 a a
# 2 b b
# 3 c c