繁体   English   中英

如何将 for 循环的结果保存为字符串?

[英]How do I save the results of a for-loop as a character string?

我已经成功地用类似下面的东西自动化了一些乏味的代码编写:

codes<-c("code1", "code2","code3")
for(i in codes){print(paste0("repetitivetext",i))}

产生类似于以下 output 的内容:

"repetitivetextcode1"
"repetitivetextcode2"
"repetitivetextcode3"

现在我想添加代码的开头和结尾。 我写:

paste0("beginning",for(i in codes){print(paste0("repetitivetext",i))},"end")¨

希望得到类似的东西:

beginningrepetitivetextcode1repetitivetextcode2repetitivetextcode3end

相反,我得到:

"repetitivetextcode1"
"repetitivetextcode2"
"repetitivetextcode3"
"beginningend"

如何获得我想要的 output? 例如,是否有一种方法可以将 for 循环的 output 折叠成单个字符串(我已经在 paste0 中尝试过折叠选项)?

此代码段必须与其他类似创建的段粘贴在一起,因此必须以正确的顺序保存这些行,并且需要将它们保存为单个字符串。

首先,定义一个空向量output来保存for循环的结果(如果你想使用一个,因为有其他人提到的更经济的解决方案):

output <- c()
for(i in codes){
  output[i] <- paste0("repetitivetext",i)
  }

然后简单地output paste0周围的文本元素:

paste0("beginning", output, ,"end")
[1] "beginningrepetitivetextcode1end" "beginningrepetitivetextcode2end" "beginningrepetitivetextcode3end"

如果你想把它全部放在一个块中,添加collapse参数:

paste0("beginning",output,"end", collapse = "")
[1] "beginningrepetitivetextcode1endbeginningrepetitivetextcode2endbeginningrepetitivetextcode3end"

数据:

codes<-c("code1", "code2","code3")

没有循环的collapse应该这样做:

paste0('beginning',
        paste0('repetitivetext', codes, collapse = ''),
        'end'
)

output:

## [1] "beginningrepetitivetextcode1repetitivetextcode2repetitivetextcode3end"

在某些情况下,R 中的 Actaully for循环可以用向量化函数代替:

codes <- c("code1", "code2", "code3")
codes2 <- paste0("repetitivetext", codes)
print(codes2)

这是 output:

[1] "repetitivetextcode1" "repetitivetextcode2" "repetitivetextcode3"

结果字符串也可以在没有任何循环的情况下实现:

paste0("beginning", 
       paste0(codes2, collapse = ""), 
       "end"
)

你得到以下 output:

[1] "beginningrepetitivetextcode1repetitivetextcode2repetitivetextcode3end"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM