如何将由不同长度的向量构成的列表转换为R中的可用数据帧? - 代码日志

如何将由不同长度的向量构成的列表转换为R中的可用数据帧?

我有一个(相当长的)向量列表。矢量由我使用strsplit()函数对句子的俄语单词组成。

以下是head()返回的:

[[1]]
[1] "модно"     "создавать" "резюме"    "в"         "виде"     

[[2]]
[1] "ты"        "начианешь" "работать"  "с"         "этими"    

[[3]]
[1] "модно"            "называть"         "блогер-рилейшенз" "―"                "начинается"       "задолго"         

[[4]]
[1] "видел" "по"    "сыну," "что"   "он"   

[[5]]
[1] "четырнадцать," "я"             "поселился"     "на"            "улице"        

[[6]]
[1] "широко"     "продолжали" "род."

注意,矢量长度不同。

我想要的是能够读取每个句子中的第一个单词,第二个单词,第三个单词等。

期望的结果将是这样的:

    P1              P2           P3                 P4    P5           P6
[1] "модно"         "создавать"  "резюме"           "в"   "виде"       NA
[2] "ты"            "начианешь"  "работать"         "с"   "этими"      NA
[3] "модно"         "называть"   "блогер-рилейшенз" "―"   "начинается" "задолго"         
[4] "видел"         "по"         "сыну,"            "что" "он"         NA
[5] "четырнадцать," "я"          "поселился"        "на"  "улице"      NA
[6] "широко"        "продолжали" "род."             NA    NA           NA

我试图使用data.frame()但是没有工作,因为行的长度不同。我也从plyr包中尝试过rbind.fill(),但是这个函数只能处理矩阵。

我在这里找到了一些其他的问题(这是我得到plyr帮助的地方),但是这些都是关于组合两个不同大小的数据帧。

谢谢你的帮助。

尝试这个:

word.list <- list(letters[1:4], letters[1:5], letters[1:2], letters[1:6])
n.obs <- sapply(word.list, length)
seq.max <- seq_len(max(n.obs))
mat <- t(sapply(word.list, "[", i = seq.max))

诀窍在于,

c(1:2)[1:4]

返回向量两个NAs

http://stackoverflow.com/questions/15201305/how-to-convert-a-list-consisting-of-vector-of-different-lengths-to-a-usable-data

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何将由不同长度的向量构成的列表转换为R中的可用数据帧?