2013-04-29 27 views

回答

5
a <- c("1234") 
res <- strsplit(a,"") 
res 
#[[1]] 
#[1] "1" "2" "3" "4" 

注意,如果a是一個數字矢量,你應該首先將它轉換爲字符串。如果需要,您可以稍後重新將結果重新輸入數字。只要您以最初返回的列表形式離開res,以下命令爲您執行此操作。

lapply(res,as.numeric) 
#[[1]] 
#[1] 1 2 3 4 

res將包含每個輸入串的一個項目與在載體中分配給它自己的元件的每個字符的列表。在這種情況下,只有一個輸入字符串,因此輸出中只有一個列表項(其中包含一個矢量)。

反向操作可與paste()函數來完成:

a<-c(5,2,8,0) 
paste(a,collapse="") 

您可能需要包裹paste起來as.numeric()

+0

謝謝您的及時答覆! – 2013-04-29 18:49:50

+1

要做相反的事情,使用'paste0' – James 2013-04-29 20:24:14

+0

...'paste0'和'collapse =「」'。 – flodel 2013-04-30 01:54:18

2

這裏是另一種可能性:

x <- 1234 
as.numeric(sapply(sequence(nchar(x)), function(y) substr(x, y, y))) 
# [1] 1 2 3 4 

nchar告訴我們有多少個「字符串」字符。用sequence包裝即可生成我們需要的位置substrsubstr將根據開始和結束位置自動將輸入轉換爲character

相關問題