2014-09-24 90 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

相关问题