gsub()在循环/ lapply中的多个数据帧上

MER*_*ose 5 r gsub

我有两个数据帧,每个数据帧都有一个名为'Title'的列,包含字符串.我需要减少这些字符串以合并它们.现在我想在循环中使它尽可能干净,这样我只需要编写一次gsub-function.

比方说我有:

df_1 <-read.table(text="
id Title
1 some_average_title
2 another:_one
3 the_third!
4 and_'the'_last
",header=TRUE,sep="")
Run Code Online (Sandbox Code Playgroud)

和:

df_2 <-read.table(text="
id Title
1 some_average.title
2 another:one
3 the_third
4 and_the_last
",header=TRUE,sep="")
Run Code Online (Sandbox Code Playgroud)

我现在跑:

df_1$Title <- gsub(" |\\.|'|:|!|\\'|_", "", df_1$Title )
df_2$Title <- gsub(" |\\.|'|:|!|\\'|_", "", df_2$Title )
Run Code Online (Sandbox Code Playgroud)

我尝试了以下循环:

for (dtfrm in c("dt_1", "df_2")) {
  assign(paste0(dtfrm, "$Title"),
    gsub(" |\\.|'|:|!|\\'|", "", get(paste0(dtfrm, "$Title")))
    )
  }
Run Code Online (Sandbox Code Playgroud)

但它没有用 - 尽管缺少错误信息.

我也在考虑,lapply(list(dt_1, dt_2), function(w){ w$Title <- XXX })但我不知道要为XXX提供什么,因为gsub()需要作为第三个参数的字符串列表.

Car*_*lli 2

这有效:

for(df in c("df_1", "df_2")){
  assign(df, transform(get(df), Title =  gsub(" |\\.|'|:|!|\\'|_", "", Title)))
}
Run Code Online (Sandbox Code Playgroud)

测试:

df_1
  id            Title
1  1 someaveragetitle
2  2       anotherone
3  3         thethird
4  4       andthelast
Run Code Online (Sandbox Code Playgroud)

和:

  df_2
  id            Title
1  1 someaveragetitle
2  2       anotherone
3  3         thethird
4  4       andthelast
Run Code Online (Sandbox Code Playgroud)