r - 摆脱 R 中粘贴函数中的额外 sep
问题描述
我试图摆脱Rsep
中paste
函数中的额外内容。它看起来很容易,但我找不到一种非 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.
)
解决方案
我们可以 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"
推荐阅读
- git - 单个设备中的多个 git 用户
- python - 如何使 Python 中的字符串解析变得不那么笨拙?
- c# - WIX 图标无法正常工作
- sql - 需要查询以选择带有作者姓名的特定评论
- url-parameters - 如何在 opencart 3.x 中向 url 添加优惠券代码和产品 ID?
- xcode - 找不到具有以下名称的广告网络适配器:com.google.DummyAdapter
- c# - 将指数形式的数字转换为十进制
- android - FirebaseRecyclerAdapter 触发两次
- c++ - char *a[] ={"yes","no"} 是否需要 malloc?
- javascript - 当我们单击动态创建的编辑图标时,如何更改输入字段中的值?