2012-02-22 47 views
1

嘗試學習一些R後,大部分Haskell做了相當長的時間我陷入了一個問題,我通常會使用unzipmap類似於解壓縮在R

我有字符串的序列,以下劃線分隔各包含兩個子串。我想將這個序列「解壓縮」成類似於數據框架或矩陣的東西,其中第一列是所有第一個子序列的序列,第二列是所有第二個子序列的序列。

R中是否有與unzip類似的東西?在這裏使用它會被認爲是意識形態嗎?或者我是否總是朝錯誤的方向接近它?

[1]給定一個列表(或更一般地任何類型的序列)對unzip的產生一對列表,在明顯的方式。

回答

3

你在正確的軌道上。你想strsplit

vec <- paste(letters,letters[26:1],sep='_') 
out <- strsplit(vec,'_') 

那名單..和sapply將得到向量出來。

data.frame(one = sapply(out,'[',1), two = sapply(out,'[',2)) 
+0

我總是忘記操作是矢量化的,效果很好,謝謝!另外,'['是否爲您提供訪問操作員,或者它是如何工作的? – 2012-02-22 17:08:27

+0

'?'[''。它是各種「子集」功能。第三個參數(本例中爲1或2)是我想要的子集的哪個元素。所以'sapply'將函數'['應用於'out'的每個列表元素。它就像寫'C(出[[1]] [1],從[[2]] [1],等等)' – Justin 2012-02-22 17:15:06

+0

我不知道你會那樣做,很不錯!謝謝 – 2012-02-22 17:24:47