在r语言中怎么能把一个list改成vector

如题所述

简单的做法 

vec <- as.vector(unlist(mylist))

但这代码有个问题 如果list 内包含 NULL 或者character(0) 这种0长元素,生成的vec 会短于mylist,导致对应相错位。这在处理数据框时并不合适。典型的情况出现在正则表达式提取文本。有些行并没有匹配,导致charater(0) 的出现。但生成的vec 又不允许错位。

要保留对应位置需要用循环

res <- character()
count=0;
for(i in mylist){count=count+1;
    if(length(i)==0){
        res[count]=NA
        }else{
        res[count]=i;
        }
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-15
访问list中的元素需要双层[[ ]] 将list改为非list类型用unlist > x y z z[[1]] #选出z的第一个元素 [1] 1 2 3 4 > unlist(z) #将z改为非list类型 [1] "1" "2" "3" "4" "a" "b" "c"本回答被提问者采纳
相似回答