簡體   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