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

时间:2017-08-10 16:42:30

标签: r function replace variable-names

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

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

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

实施例: 假设我有一个包含这些变量名的数据集,我只想删除最后一个' _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

现在,我希望我的代码删除最后一个&#39; _2&#39;,以便它返回&#39; h_2ello&#39;而不是hello_2。

有谁知道怎么做? 提前谢谢!

背景资料:

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

由于我想将这些文件合并在一起,我想删除&#39; 2&#39;和&#39; 3&#39;在数据集中然后合并它们,以便似乎每个人都在同一时刻进行测量。

但是,一些乐谱名称也包括角色2和3。例如:str2tt2是Stroop卡2总时间测量时刻2的变量名。我只想删除最后一个&#39; 2&#39;,但是当使用sub()函数时我只删除第一个。< / p>

1 个答案:

答案 0 :(得分:0)

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

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

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