str(list(paste("time" , Sys.time())))
這是一個長度爲1的列表中,1元是paste
,它會返回一個字符串,因爲這是paste
的工作是什麼。因此str
報告chr類型的長度爲1的列表。
str(list(c("time" , Sys.time())))
這也是長度爲1的列表,則1個元素是字符串「時間」,並從一個Sys.time()
對象POSIXct
一個載體(由c
創建)。矢量只能存儲一種東西,所以R必須將所有東西都轉換成字符。
POSIXct在矢量元素被轉換爲字符
有趣的方式取決於什麼是在載體中的第一個元素:
> str(c("this",Sys.time()))
chr [1:2] "this" "1510353128.84358"
> str(c(Sys.time(),"this"))
POSIXct[1:2], format: "2017-11-10 22:33:13" NA
Warning message:
In as.POSIXlt.POSIXct(x, tz) : NAs introduced by coercion
因爲R爲使用所述第一元素來找出要使用的轉換方法。如果第一個元素是一個字符,它使用as.character.default
這POSIXt對象那兒轉換成數字,因爲內心深處他們只是數字和as.character.default
不明白POSIXt時間戳:
> as.character.default(Sys.time())
[1] "1510353378.21108"
如果第一個元素,或所有的元素,是POSIX對象,然後你得到一個格式化的時間戳:
> as.character.POSIXct(Sys.time())
Error in as.character.POSIXct(Sys.time()) :
could not find function "as.character.POSIXct"
> as.character.POSIXt(Sys.time())
[1] "2017-11-10 22:36:30"
這種失敗:
> str(c(Sys.time(),"this"))
POSIXct[1:2], format: "2017-11-10 22:33:13" NA
Warning message:
In as.POSIXlt.POSIXct(x, tz) : NAs introduced by coercion
,因爲它試圖調用as.POSIXlt.POSIXct
上一個字符串 「這個」:
> as.POSIXlt.POSIXct("this")
[1] NA
Warning message:
In as.POSIXlt.POSIXct("this") : NAs introduced by coercion
>
清除?可能不會。基本上你應該弄清楚你想要什麼,並在開始粘貼字符串之前將數據元素格式化爲字符。
你想要的輸出可能不能用'str'完成。你爲什麼要這個確切的輸出?你知道R中的字符和數字是如何粘在一起的嗎?或者'c()'和'list()'之間的區別? – Spacedman
@Spacedman我想要這個輸出,因爲我不確定當我使用'c'或'paste'時爲什麼輸出會改變。沒有什麼特別的原因,除了結果不是我所期望的。 –