我有以下代码,用于将名称统一为数据框(tb):
names(tb) = tolower(names(tb))
names(tb) = gsub("\\:", "", names(tb))
names(tb) = gsub("\\.", "_", names(tb))
names(tb) = gsub("\\-", "_", names(tb))
names(tb) = gsub("[[:space:]+]", "_", names(tb))
我需要将这5个字符串应用于多个数据框,因此我想为此创建一个函数。你能帮我吗?谢谢!
答案 0 :(得分:1)
非常简单,只需将数据框传递给函数,更改名称,然后返回更改的数据框。
name_change <- function(tb) {
names(tb) = tolower(names(tb))
names(tb) = gsub("\\:", "", names(tb))
names(tb) = gsub("\\.", "_", names(tb))
names(tb) = gsub("\\-", "_", names(tb))
names(tb) = gsub("[[:space:]+]", "_", names(tb))
return tb
}
答案 1 :(得分:1)
可以使用
在函数中进行简化f1 <- function(v1) {
gsub("[. -]+", "_", gsub(":", "", tolower(v1)))
}
或使用chartr
f2 <- function(v1) {
chartr(". -", "___", gsub(":", "", tolower(v1)))
}
f1(str1)
#[1] "hellos1_s2_s3_s4"
f2(str1)
#[1] "hellos1_s2_s3_s4"
str1 <- "hello:s1.s2-s3 s4"