library(tidyverse)
con = url("https://s3-us-west-1.amazonaws.com/fasttext-vectors/word-vectors-v2/cc.af.300.vec.gz", "r")
con = gzcon(con)
wv = readLines(con, n = 1000)
我有许多形式的chr向量:
> str(wv[1][[1]])
chr "in 0.0183 0.0885 0.0084 0.0157 -0.0236 0.0419 -0.0224 0.0007 -0.0232 0.0259 -0.0037 -0.0167 -0.0254 -0.0046 -0.0209 0.0154 0.00"| __truncated__
> str(wv[2][[1]])
chr "n 0.0102 0.2465 0.0483 -0.0223 -0.0253 -0.0609 0.0218 0.0273 -0.0075 0.0406 -0.0180 0.0033 -0.0012 0.0160 0.0171 -0.0359 0.0350"| __truncated__
> str(wv[20][[1]])
chr "was -0.0028 -0.0193 -0.0520 0.0092 -0.0437 0.0029 0.0057 -0.0276 -0.0028 0.0057 0.0182 0.0111 0.0284 0.0033 -0.0183 0.0406 -0.0"| __truncated__
因此,第一个项目是文本形式的字符,然后在第一个空格之后是一系列数字。
我想创建一个数据框,其中第一列是单词,随后的列是数字。在这种情况下,将有3行,第一列包含“ in”,“ n”,然后包含“ was”。
尝试:
wv1 <- lapply(wv, function(i) {strsplit(i, " ") %>% as.data.frame()}) %>% unlist()
但是这返回了一个错误:
Error in structure(res, levels = lv, names = nm, class = "factor") :
'names' attribute [300701] must be the same length as the vector [1000]
如何将wv转换为数据框?