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__
Итак, первый элемент - это chr в текстовой форме, а после первого пробела - серия чисел.
Я хотел бы создать фрейм данных, где первый столбец - это слово, а последующие столбцы - это числа.В этом случае будет 3 строки, первый столбец содержит «in», «n», а затем «was».
Tried:
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 в фрейм данных?