2014-09-24 81 views
0

所以,我想每個字符串轉換像這樣的列表爲字符串,數據必須的,是NULL

mylist 

# [[1]] 
# [1] "abc" "000" 
# 
# [[2]] 
# [1] "a00" "ac0" "bcc" 

.................... 

現在,我嘗試應用功能

mylist <- lapply(mylist, matrix, nrow=1) # convert each string to matrix 

但是這表明,

錯誤FUN(X [[202L]],...)的錯誤: '數據' 必須是向量類型的,是「NULL'`。

它與有串僅1's0's但不與字符

+1

該錯誤消息爲您提供了一個開始調試的地方。 mylist [[202]]包含什麼?你對你想要做的描述不清楚。 – mnel 2014-09-24 05:57:50

+1

@sarah我回答了你的新問題'比較兩個數據幀並輸出唯一值',5分鐘後,線程消失了? – akrun 2014-09-24 09:33:38

回答

1

當有缺失或空白列表元素的至少一個指引出現此錯誤工作。我們可以通過用一個空元素有意創建列表創建此錯誤:在FUN

mylist <- list(c("abc","000"), 
       c("a00","ac0","bcc"), 
       c(), 
       c("a00","ac0","bcc")) 

lapply(mylist, matrix, nrow=1) 

誤差(X [[I]],...):「數據」必須是向量類型的,是 「NULL」

要解決上述錯誤,我們可以簡單地刪除我們的名單空白元通過運行,通過元素子集列表中的代碼,只有大於零的長度較大,如:

mylist <- mylist[lapply(mylist,length)>0] 

現在我們的列表中沒有任何空的元素,我們可以重新運行lapply(mylist,matrix,nrow = 1),它將成功地將每個元素轉換爲矩陣格式。

lapply(mylist, matrix, nrow=1) 

[[1]] 
    [,1] [,2] 
[1,] "abc" "000" 

[[2]] 
    [,1] [,2] [,3] 
[1,] "a00" "ac0" "bcc" 

[[3]] 
    [,1] [,2] [,3] 
[1,] "a00" "ac0" "bcc" 
+0

@sarah - 嗨,你還在尋找這個問題的答案還是這提供了一個解決方案?如果這有幫助,請將其選爲解決方案,以幫助社區知道已解決問題並幫助其他人更快地找到答案。謝謝。 – www 2017-10-09 20:21:05

相關問題