我正在尝试将paste
地址行连接到单个地址字符串.但是,有些行是blank(""
),这意味着sep
会插入一个额外的行并使地址看起来很难看.例如:
addr.df <- data.frame(street1=c("22B","Windsor Castle"),street2=c("Baker Street",""),city=c("London","Windsor"))
with(addr.df,paste(street1,street2,city,sep=", "))
[1] "22B, Baker Street, London" "Windsor Castle, , Windsor"
Run Code Online (Sandbox Code Playgroud)
注意,
第二个地址中的额外内容.有没有办法围绕这个不涉及一段regexp诱导的tourettes?
我认为你不能避免一点点的正规化.
gsub('(, )+',', ',with(addr.df,paste(street1,street2,city,sep=", ")))
Run Code Online (Sandbox Code Playgroud)
(正则表达式说:用一个"逗号空间"替换多个"逗号空间")
它可以在一行中完成,无需正则表达式,但您需要引入循环(在本例中通过 apply)。
apply(
addr.df,
1,
function(row) paste(row[nzchar(row)], collapse = ", ")
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3272 次 |
最近记录: |