【发布时间】:2019-02-25 06:16:00
【问题描述】:
请参阅以下可重现的示例:
require(tidyverse)
set.seed(1)
reprex_df <- data.frame(
var1 = sample(1:10),
var2 = sample(11:20),
var3 = sample(21:30)
)
我正在尝试创建一个新列,其中包含通过将每一行中的其他变量连接成带有“https://www.google.com/search?q=”的字符串而创建的 URL,使用以下代码:
reprex_df %>% mutate(new_col = c(paste("https://www.google.com/search?q=", var1, var2, var3, sep="+")))
结果:
https://www.google.com/search?q=+3+13+30
这样做的问题是它在https://www.google.com/search?q= 和var1 之间放置了一个+,这不是URL 的有效格式。我不需要这些字符串之间的分隔符。像这样:
https://www.google.com/search?q=3+13+30
我是否可以使用paste() 以某种方式指定对这部分连词使用不同的分隔符,还是必须采取完全不同的方法?有什么想法吗?
【问题讨论】:
-
对于任何想知道的人来说,这是因为 require() 返回一个逻辑,这对于有条件地加载它很有用,或者在一个需要运行的函数中,即使没有找到库。 Library() 更适合设置通用环境。
-
@KonradRudolph,我会补充一点(虽然目标要多得多):在问题中,加载您需要的包,而不是导入其他 25 个的元包(有时很大) 包。善待您的回答者,我通常在已经运行的 R 会话中查看内容,并且由于我不亲自加载所有这些包,因此我不想将它们放在命名空间中(哦,冲突! )。它相当于 python 的
from pkgname import *,对于命名空间管理来说,既不鼓励也(再次客观地)马虎。 (是的......这只是我的意见。) -
@r2evans 完全同意,不仅在问题中,而且通常在代码中。 Tidyverse 是惊人的。
tidyverse(包)是坏的。 -
我想知道是否有人可以证明
library(*)(在 R 中)或from * import *(在 python 中)看到碰撞和其他问题的大火......
标签: r string concatenation