在R中连接多个字符串
我想连接以下URL,我编写了以下函数来连接所有URL:在R中连接多个字符串,r,replace,concatenation,R,Replace,Concatenation,我想连接以下URL,我编写了以下函数来连接所有URL: library(datetime) library(lubridate) get_thredds_url<- function(mon, hr){ a <-"http://abc.co.in/" b <-"thredds/path/" c <-paste0("%02d", ymd_h(mon)) d <-paste0(strftime(datetime_group, format="%Y%m%
library(datetime)
library(lubridate)
get_thredds_url<- function(mon, hr){
a <-"http://abc.co.in/"
b <-"thredds/path/"
c <-paste0("%02d", ymd_h(mon))
d <-paste0(strftime(datetime_group, format="%Y%m%d%H"))
e <-paste0("/gfs.t%sz.pgrb2.0p25.f%03d",(c, hr))
url <-paste0(a,b,b,d)
return (url)
}
mon = datetime(2017, 9, 26, 0)
hr = 240
url = get_thredds_url(mon,hr)
print (url)
弄清楚这是什么有点混乱,你正试图这么做。在您的代码中似乎有很多相互矛盾的部分,特别是与您想要的最终输出相比。因此,我决定将重点放在想要的输出和您在变量中提供的输入上
get_thredds_url <- function(yr, mnth, day, hrs1, hrs2){
part1 <- "http://abc.co.in/"
part2 <- "thredds/path/"
ymdh <- c(yr, formatC(c(mnth, day, hrs1), width=2, flag="0"))
part3 <- paste0(ymdh, collapse="")
pre4 <- formatC(hrs1, width=2, flag="0")
part4 <- paste0("/gfs.t", pre4, "z.pgrb2.0p25.f", hrs2)
return(paste0(part1, part2, part3, part4))
}
get_thredds_url(2017, 9, 26, 0, 240)
# [1] "http://abc.co.in/thredds/path/2017092600/gfs.t00z.pgrb2.0p25.f240"
get\u thredds\u url弄清楚它是什么有点混乱,你正试图这么做。在您的代码中似乎有很多相互矛盾的部分,特别是与您想要的最终输出相比。因此,我决定将重点放在想要的输出和您在变量中提供的输入上
get_thredds_url <- function(yr, mnth, day, hrs1, hrs2){
part1 <- "http://abc.co.in/"
part2 <- "thredds/path/"
ymdh <- c(yr, formatC(c(mnth, day, hrs1), width=2, flag="0"))
part3 <- paste0(ymdh, collapse="")
pre4 <- formatC(hrs1, width=2, flag="0")
part4 <- paste0("/gfs.t", pre4, "z.pgrb2.0p25.f", hrs2)
return(paste0(part1, part2, part3, part4))
}
get_thredds_url(2017, 9, 26, 0, 240)
# [1] "http://abc.co.in/thredds/path/2017092600/gfs.t00z.pgrb2.0p25.f240"
get\u thredds\u url使用sprintf
可以更好地控制插入字符串中的值
library(lubridate)
get_thredds_url<- function(mon, hr){
sprintf("http://abc.co.in/thredds/path/%s/gfs.t%02dz.pgrb2.0p25.f%03d",
strftime(mon, format = "%Y%m%d%H", tz = "UTC"),
hour(mon),
hr)
}
mon <- make_datetime(2017, 9, 26, 0, tz = "UTC")
hr <- 240
get_thredds_url(mon, hr)
[1] "http://abc.co.in/thredds/path/2017092600/gfs.t00z.pgrb2.0p25.f240"
库(lubridate)
使用sprintf
获取\u thredds\u url可以更好地控制插入字符串的值
library(lubridate)
get_thredds_url<- function(mon, hr){
sprintf("http://abc.co.in/thredds/path/%s/gfs.t%02dz.pgrb2.0p25.f%03d",
strftime(mon, format = "%Y%m%d%H", tz = "UTC"),
hour(mon),
hr)
}
mon <- make_datetime(2017, 9, 26, 0, tz = "UTC")
hr <- 240
get_thredds_url(mon, hr)
[1] "http://abc.co.in/thredds/path/2017092600/gfs.t00z.pgrb2.0p25.f240"
库(lubridate)
GETSuxStudiSuURL1,无论是代码> C/<代码>和<代码> URL<代码>都是<代码> r>代码>中的预定义函数,考虑使用更好的变量名。其次,您没有定义datetime
或ymd\u h
,这些是从包中加载的吗?最后,在定义e
try的函数行中:eI在我的原始代码中使用了更好的变量名称。是的,datetime和ymd_h是从包中加载的。datetime_组
也没有定义。请编辑您的问题,使其比“从包中加载”更具体。你的第一个错误在这里:<代码> E1,无论是<代码> c>代码>和<代码> URL<代码>都是<代码> r>代码>中的预定义函数,考虑使用更好的变量名。其次,您没有定义datetime
或ymd\u h
,这些是从包中加载的吗?最后,在定义e
try的函数行中:eI在我的原始代码中使用了更好的变量名称。是的,datetime和ymd_h是从包中加载的。datetime_组
也没有定义。请编辑您的问题,使其比“从包中加载”更具体。什么软件包?您的第一个错误在这里:eThanks@Ken。它起作用了。我还有一个问题要继续提问。我可以在这里问一下吗?如果你的问题中没有提到,最好你开一个新的。如果是关于我的答案需要澄清的话,请在这里提问,我只想重复几个月、一年、hrs1和hrs2。最终结果将是我将得到的URL的列表。如果你能在这里告诉你,那就好了。“Kaushik,如果这个答案是有用的,考虑接受它作为一个解决方案(检查标记左边),我相信你也可以自己弄清楚。我也不知道你为什么问两个回答者是否可以补充你的问题,他们都说不,但你还是决定去做。谢谢@Ken。它起作用了。我还有一个问题要继续提问。我可以在这里问一下吗?如果你的问题中没有提到,最好你开一个新的。如果是关于我的答案需要澄清的话,请在这里提问,我只想重复几个月、一年、hrs1和hrs2。最终结果将是我将得到的URL的列表。如果你能在这里告诉你,那就好了。“Kaushik,如果这个答案是有用的,考虑接受它作为一个解决方案(检查标记左边),我相信你也可以自己弄清楚。我也不知道你为什么问两个回答者是否可以补充你的问题,他们都说不,但你还是决定去做。@montheshark,非常感谢。@montheshark,我还有一个问题要问。我想迭代mon和hr。我可以把我的问题写在这里吗?@Kaushik对原问题有任何修改。如果这是一个实质性的变化或与原问题无关,则应作为新问题提出。一般来说,显示一个小样本数据集和所需的输出总是很有帮助的。@montheshark,非常感谢。@montheshark,我还有一个查询要继续。我想迭代mon和hr。我可以把我的问题写在这里吗?@Kaushik对原问题有任何修改。如果这是一个实质性的变化或与原问题无关,则应作为新问题提出。作为一般规则,显示小样本数据集和所需输出总是有帮助的。