首页 > 解决方案 > 摆脱 R 中粘贴函数中的额外 sep

问题描述

我试图摆脱Rseppaste函数中的额外内容。它看起来很容易,但我找不到一种非 hacky 的方法来修复它。假设l1-l3是列表

l1 = list(a=1)
l2 = list(b=2)
l3 = list(c=3)
l4 = list(l1,l2=l2,l3=l3)

请注意, 的第一个元素l4未命名。现在我想在名称中添加一个常量,如下所示:

names(l4 ) = paste('Name',names(l4),sep = '.')

这是输出:

 names(l4)
[1] "Name."   "Name.l2" "Name.l3"

我怎样才能摆脱.第一个输出中的(Name.

标签: r

解决方案


我们可以 ue trimws(from R 3.6.0- 可以whitespace用自定义字符指定)

trimws(paste('Name',names(l4),sep = '.'), whitespace = "\\.")
#[1] "Name"    "Name.l2" "Name.l3"

或者用 withsub来匹配字符串末尾 ( ) 的.(.是任何字符的元字符,所以我们转义以获得字面意思)并替换为空白 ( )\\$""

sub("\\.$", "", paste('Name',names(l4),sep = '.'))

如果最后.已经存在names,我们可以使用索引选项

ifelse(nzchar(names(l4)), paste("Name", names(l4), sep="."), "Name")
#[1] "Name"     "Name.l2." "Name.l3" 

推荐阅读