[英]paste() function in R: what happens when the input is a character vector?
我想了解paste
如何處理輸入向量。
具體來說,我想知道為什么我在"che"
和"fai"
之間看到兩個空格
> paste(c("ciao", "che", "fai"))
[1] "ciao" "che" "fai"
您的問題與paste
工作方式無關。 相反,它與print
工作方式有關。
當您啟動命令paste(c("ciao", "che", "fai"))
,您在控制台中看到的實際上是print(paste(c("ciao", "che", "fai")))
。
在這種情況下, paste
根本不會更改您的輸入,因此就像啟動以下命令: print(c("ciao", "che", "fai"))
。
字符向量的print
默認行為使每個字符串具有相同的長度(相同的字符數),然后將它們寫入控制台。
在您的情況下,每個字符串必須與最長的字符串 ( "ciao"
) 一樣長,即 4 個字符加上兩倍"
。不那么長的字符串用空格填充。
在這里,我創建了一個函數來分解print
對輸入的實際作用:
my_print <- function(x){
# set up " " around strings
x <- dQuote(x, q = FALSE)
# make all the same length
x <- format(x, width = max(nchar(x)))
# print with the same style of `print`
cat(x, fill = TRUE, labels = paste0("[", seq_along(x), "]"))
}
您在控制台中看到的內容:
> my_print(c("ciao", "che", "fai"))
[1] "ciao" "che" "fai"
> print(c("ciao", "che", "fai"))
[1] "ciao" "che" "fai"
> c("ciao", "che", "fai")
[1] "ciao" "che" "fai"
> print(paste(c("ciao", "che", "fai")))
[1] "ciao" "che" "fai"
注意每個字符串的長度:
[1] "ciao" "che" "fai"
------+------+------
123456+123456+123456
這與粘貼的工作方式無關,而是與如何將輸出打印到 R 中的控制台這一事實有關。嘗試print(c("ciao", "che", "fai"))
。 你應該得到相同的結果。 為了更好地理解行為,您可以嘗試print(c("a", "aaaa", "a", "a", "a"))
。
paste()
函數連接向量的元素。 連接元素之間有空格的原因是參數collapse
的標准值為" "
。 如果你想直接連接元素,你可以使用paste(c("ciao", "che", "fai"), collapse = "")
-> "ciaochefai"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.