我得到了一个带有大量变量的大型数据框,我想选择并重命名其中的一些变量。我想通过选择字符来反复选择它们。考虑一下,我有数百个变量,因此通过索引调用它们将是一场大屠杀。有什么解决方案可以优雅地做到这一点吗?
例如,我得到了以下列名称:
[1] "Compound.Name" "owl.7.aa" "owl.8.aa" "owl.onco.72.aa" "owl.9.aa" "owl.10.aa"
[7] "owl.11.aa" "owl.12.aa" "owl.13.aa" "owl.7.3.aa" "owl.8.3.aa" "esp.8.bag"
[13] "esp.7.bag" "esp.72.bag" "esp.9.bag" "esp.10.bag" "esp.11.bag" "esp.12.bag"
[19] "esp.13.bag" "esp.7.3.bag" "esp.8.3.bag"
我想用字符“ 7”有选择地选择“ owl.7.aa”和“ esp.7.bag”,并用新名称(例如“ seven”或“ 7”)替换它们。然后,我想使用“ owl.8.aa”和“ esp.8.bag”将它们替换为“八个”来进行相同的工作,依此类推。
换句话说,我想通过实验的识别号(7、8、72、9等)来对实验进行配对。
有什么建议吗?
提前谢谢
答案 0 :(得分:0)
我们可以使用english
library(english)
library(gsubfn)
gsubfn("(\\d+)", ~ as.character(english(as.numeric(x))), names(df1))
或者可能是
gsubfn("[A-Za-z]+[^0-9]+(\\d+)\\..*", ~ as.character(english(as.numeric(x))),
names(df1)
#[1] "Compound.Name" "seven" "eight" "seventy-two" "nine" "ten"
#[7] "eleven" "twelve" "thirteen" "seven" "eight" "eight"
#[13] "seven" "seventy-two" "nine" "ten" "eleven" "twelve"
#[19] "thirteen" "seven" "eight"
names(df1)
c("Compound.Name", "owl.7.aa", "owl.8.aa", "owl.onco.72.aa",
"owl.9.aa", "owl.10.aa", "owl.11.aa", "owl.12.aa", "owl.13.aa",
"owl.7.3.aa", "owl.8.3.aa", "esp.8.bag", "esp.7.bag", "esp.72.bag",
"esp.9.bag", "esp.10.bag", "esp.11.bag", "esp.12.bag", "esp.13.bag",
"esp.7.3.bag", "esp.8.3.bag")