R 迭代向量中的值

R 迭代向量中的值,r,R,我尝试迭代一个向量来创建一组名称。因此,我采取以下行动: load <- function() { #create empty vector for storing website adresses vector_sites <- c() names <- c("lening", "krediet") for (name in names(names)){ adress_part1 <- "https://www.google.com/trends/explore

我尝试迭代一个向量来创建一组名称。因此,我采取以下行动:

load <- function() {

#create empty vector for storing website adresses
vector_sites <- c()  
names <- c("lening", "krediet")

for (name in names(names)){
adress_part1 <- "https://www.google.com/trends/explore#q="
adress_part2 <- names[i]
adress_part3 <- "&geo=NL&date=today%203-m&cmpt=q&tz=Etc%2FGMT-2"

total_adress <- paste(adress_part1, adress_part2, adress_part3, sep="")
print(names[i])
vector_sites <- append(vector_sites, total_adress)

load正如@akrun所说,您可以简单地使用
paste0(地址部分1,名称,地址部分3)
。要使代码正常工作,您需要以下内容:

load <- function() {

    vector_sites <- c()  
    names <- c("lening", "krediet")

    for (i in seq_along(names)) {
        adress_part1 <- "https://www.google.com/trends/explore#q="
        adress_part2 <- names[i]
        adress_part3 <- "&geo=NL&date=today%203-m&cmpt=q&tz=Etc%2FGMT-2"

        total_adress <- paste0(adress_part1, adress_part2, adress_part3)
        print(names[i])
        vector_sites <- append(vector_sites, total_adress)
    }
    return(vector_sites)
}

load正如@jeff的回答所指出的,您的代码的问题是,您在name
中迭代
name,但在循环中不使用
name
。它应该是沿着(名称)的序列中的
i

然而,更大的问题是,这种循环是无效的,并且容易出错@注释中的akrun建议使用
paste0
,但要以矢量化的方式,即在循环之外。因此:

adress_part1 <- "https://www.google.com/trends/explore#q="
names <- c("lening", "krediet")
adress_part3 <- "&geo=NL&date=today%203-m&cmpt=q&tz=Etc%2FGMT-2"

total_adress <- paste0(adress_part1, names, adress_part3)

> total_adress
[1] "https://www.google.com/trends/explore#q=lening&geo=NL&date=today%203-m&cmpt=q&tz=Etc%2FGMT-2" 
[2] "https://www.google.com/trends/explore#q=krediet&geo=NL&date=today%203-m&cmpt=q&tz=Etc%2FGMT-2"
address\u part1
paste(address\u part1,name,address\u part3,sep='')
您不需要循环,也不需要粘贴0(address\u part1,name,address\u part3)