我有两个数据帧,每个数据帧都有一个名为'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()需要作为第三个参数的字符串列表.
这有效:
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)
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |