我有一个(相当长的)向量列表。这些向量由我通过对句子使用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
帮助的地方),但这些问题都是关于组合两个不同大小的 Dataframe 的。
谢谢你的帮助
7条答案
按热度按时间uubf1zoe1#
一个内衬,带
plyr
gudnpqoy2#
试试这个:
诀窍在于
返回向量+两个NA
lxkprmvk3#
另一个选项是
stri_list2matrix
,来自library(stringi)
注:数据来自@juba的帖子。
或者正如@Valentin在评论中提到的
或使用
tidyverse
jei2mxaa4#
你可以这样做:
其给出:
qmelpv7a5#
您也可以使用data.table包中的
rbindlist()
。将向量转换为
data.table
s或data.frame
s,并在lapply()
的帮助下转置它们(不确定这是否会降低速度)。然后将它们与rbindlist()
结合-用NA填充缺失的细胞。yuvru6vn6#
由于问题是将
list
转换为data.frame
,因此可以将所有列表向量的最大长度设置为max(lengths(L))
,并在lapply
中使用length<-
,然后使用list2DF
将此列表转换为data.frame
。66bbxpm57#
另一种选择是定义一个类似于这样的函数(它模仿
rbind.fill
),或者直接从rowr
包中使用它:这个响应取自here(这里有一些用法示例)。