在R中连接多个字符串

在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%

我想连接以下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%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对原问题有任何修改。如果这是一个实质性的变化或与原问题无关,则应作为新问题提出。作为一般规则,显示小样本数据集和所需输出总是有帮助的。