如何只替换 R 中多个变量名的最后一个字符?

How to replace only the final character of multiple variable names in R?

下面是一些关于我的数据集的背景信息,如果你想了解我的问题来自哪里(我实际上想合并数据集,所以也许有人知道更有效的方法)。

问题: 如何仅替换 R 中变量名的最后一个字符(对于多个变量)?

我尝试使用 sub() 函数并且它工作正常,但是,一些变量名称包含我想多次更改的字符(例如 str2tt2)。我只想 'remove' 或将最后一个 '2' 替换为空白 space。

示例: 假设我有一个包含这些变量名的数据集,我只想删除最后的“_2”个字符,我试过这个:

  h_2ello_2 how_2 are_2 you_2
1         1     3     5     7
2         2     4     6     8

names(data) <- sub('_2', '', names(data))

输出:

  hello_2   how are you
1       1     3   5   7
2       2     4   6   8

现在,我希望我的代码删除最后一个“_2”,以便它 returns 'h_2ello' 而不是 hello_2。

有人知道怎么做吗? 提前致谢!


背景资料:

我目前正在尝试从三个独立的数据集构建数据集。这三个不同的来自三个不同的测量时刻,因此它们的变量名在每个变量名后都包含一个字符,分别代表它们的测量时刻。也就是说,对于测量时刻 2,变量名称为 scoreA2、scoreB2、scoreC2,对于测量时刻 3,变量名称为 scoreA3、scoreB3 和 scoreC3。

因为我想把这些文件合并在一起,所以我想删除数据集中的'2'和'3',然后合并它们,这样看起来每个人都在同一时刻被测量了。

但是,一些乐谱名称中也包含字符 2 和 3。例如:str2tt2是Stroop card 2 total time measurement moment 2的变量名。我只想去掉最后一个'2',但是使用sub()函数时我只去掉了第一个。

我们需要使用元字符 $ 提示原始数据集列名称上的字符串结尾

names(data) <- sub('_2$', '', names(data))
names(data)
#[1] "h_2ello" "how"     "are"     "you"

在 OP 的代码中,_2 匹配 h_2ello_2 中的第一个实例,因为它是 sub 并从 h_2 中删除 _2。相反,我们需要将位置指定为字符串的最后一个字符。