2017-11-10 68 views
1

這裏的時間被添加到列表和列表轉換成字符串:在列表中追加字符串日期項時如何保留POSIXct格式?

str(list(Sys.time())) 

輸出是:

POSIXct[1:1], format: "2017-11-10 21:22:56" 

如何粘貼字符串列表項,保持格式? 這應該是輸出:

List of 1 
    $ : Time : POSIXct[1:1], format: "2017-11-10 21:22:56" 

我已經試過:

str(list(paste("time" , Sys.time()))) 
str(list(c("time" , Sys.time()))) 

但輸出是:

> str(list(paste("time" , Sys.time()))) 
List of 1 
$ : chr "time 2017-11-10 21:23:23" 
> str(list(c("time" , Sys.time()))) 
List of 1 
$ : chr [1:2] "time" "1510349011.98052" 
+0

你想要的輸出可能不能用'str'完成。你爲什麼要這個確切的輸出?你知道R中的字符和數字是如何粘在一起的嗎?或者'c()'和'list()'之間的區別? – Spacedman

+0

@Spacedman我想要這個輸出,因爲我不確定當我使用'c'或'paste'時爲什麼輸出會改變。沒有什麼特別的原因,除了結果不是我所期望的。 –

回答

2

你必須做對捕獲的輸出字符串操作:

writeLines(sub('$ : ', '$: time :', capture.output(str(list(Sys.time()))), fixed=T)) 
## List of 1 
## $: time :POSIXct[1:1], format: "2017-11-10 16:34:47" 

儘管我不得不說我不完全確定你想要做什麼。

5
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 
> 

清除?可能不會。基本上你應該弄清楚你想要什麼,並在開始粘貼字符串之前將數據元素格式化爲字符。

相關問題