数据必须是矢量类型,为NULL

时间:2014-09-24 05:25:02

标签: r

所以,我试图将每个字符串转换为字符串,

mylist

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

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

现在,我正在尝试应用函数

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

但这显示错误,

  

FUN错误(X [[202L]],...):&#39;数据&#39;必须是矢量类型,是&#39; NULL&#39;`。

适用于仅包含1's0's但不使用字符的字符串

1 个答案:

答案 0 :(得分:2)

当至少有一个索引缺少列表元素或空白列表元素时,会发生此错误。我们可以通过故意创建一个包含空元素的列表来重新创建此错误:

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

lapply(mylist, matrix, nrow=1)
  

FUN中的错误(X [[i]],...):'data'必须是矢量类型,是   '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"