2016-03-07 494 views
1

我有以下列表,我似乎無法將其轉換爲數字矩陣。將列表中的字符串轉換爲數字矩陣

> MyList 
[[1]] 
[1] "X4" "X3" "X2" "X5" 

[[2]] 
[1] "X5" "X2" "X4" "X3" 

[[3]] 
[1] "X4" "X3" "X2" "X5" 

我試過as.matrix(MyList),但仍然給了我一個帶有字符串的矩陣。我試圖完成的是一個帶有數值的矩陣,所以「X4」變成了4,「X3」變成了3,等等。有什麼建議麼? 顯然,在這段代碼中,我可以很容易地改變它,用我的實際代碼我不能改變輸出。

+0

請提供代碼,否則感到我的憤怒的向下投票按鈕。 – InfiniteFlashChess

回答

3

我們可以通過list循環,使用sub刪除非數字字符,並轉換爲numericas.numeric

lst <- lapply(MyList, function(x) as.numeric(sub("\\D+", '', x))) 
lst 
#[[1]] 
#[1] 4 3 2 5 

#[[2]] 
#[1] 5 2 4 3 

#[[3]] 
#[1] 4 3 2 5 

如果我們需要的是一個matrix,無論是

do.call(rbind, lst) 

或者像@Jaap在評論中提到的,使用sapply代替lapply和轉輸出

t(sapply(MyList, function(x) as.numeric(sub("\\D+", '', x)))) 
+1

完美地工作。謝謝。 – Joseph

+1

't(sapply(MyList,function(x)as.numeric(sub(「\\ D +」,'',x))))'給出一個矩陣 – Jaap

+1

正如另一個建議可以提取每個字母的第一個字母像這樣的矩陣......只是爲了給出想法。 MYLIST < - 列表( 「X3」, 「X8」, 「X9」) mylist1 < - as.numeric(GSUB( 「^ X」, '',MYLIST)) mylist1 [1] 3 8 9 來源: http://stackoverflow.com/questions/21138296/remove-first-character-from-a-string – InfiniteFlashChess