2017-06-28 136 views
0

我想从一个CSV文件,其中的第一个字是“主”字和词语的相同的记录,其余读同义词是2的倍数列出的清单是其同义词 enter image description here同义词

现在我基本上要创建一个列表像我将不得不在R,

**synonyms <- list(
    list(word="ss", syns=c("yy","yyss")), 
    list(word="ser", syns=c("sert","sertyy","serty")) 
)** 

这给了我一个清单,

synonyms 
[[1]] 
[[1]]$word 
[1] "ss" 

[[1]]$syns 
[1] "yy" "yyss" 


[[2]] 
[[2]]$word 
[1] "ser" 

[[2]]$syns 
[1] "sert" "sertyy" "serty" 

这基本上是一个列表Ø f“单词”和“syns”的列表。 如何从csv文件中读取单词和同义词的同时创建类似列表

任何指针都会有帮助!谢谢

+0

我会去了解一下'readLines'。这将返回一个向量,其中每个元素都是csv的一行。然后你可以使用'strsplit'解析来得到一个载体列表,其中每个载体的第一个元素是你的单词,其余的是同义词。 – lmo

+0

我能够做到这一点,但那么我如何将矢量的第一个元素转换为列表的第一个元素(名为$ word)以及随后的单词作为char向量形式的列表的第二个元素(命名为$ syns) – shashankp

+0

这是一个可重现的例子。今后,请制作一个用于使用的示例。数据图像不够。 – lmo

回答

1

这个过程应该返回你想要的。

# read in data using readLines 
myStuff <- readLines(textConnection(temp)) 

这将返回与该文件在每行一个元素的字符向量。请注意,textConnection对于读取文件不是必需的。只需提供文件路径。现在,使用strsplit将每个向量元素分成一个向量并返回一个列表。

myList <- strsplit(myStuff, split=" ") 

现在,将第一个元素与列表中每个向量的剩余元素分开。

result <- lapply(myList, function(x) list(word=x[1], synonyms=x[-1])) 

这将返回所需的结果。我们使用lapply来移动列表项。对于每个列表项,我们返回一个命名列表,其中第一个元素(名为word)与向量的第一个元素(该元素是列表项)相对应,并且此向量的其余元素放置在第二个名为synonyms义元素的列表元素中。

result 
[[1]] 
[[1]]$word 
[1] "ss" 

[[1]]$synonyms 
[1] "yy" "yyss" 


[[2]] 
[[2]]$word 
[1] "ser" 

[[2]]$synonyms 
[1] "sert" "sertyy" "serty" 


[[3]] 
[[3]]$word 
[1] "at" 

[[3]]$synonyms 
[1] "ate" "ater" "ates" 


[[4]] 
[[4]]$word 
[1] "late" 

[[4]]$synonyms 
[1] "lated" "lates" "latee" 

数据

temp <- 
"ss yy yyss 
ser sert sertyy serty 
at ate ater ates 
late lated lates latee" 
+0

非常感谢你! – shashankp