2017-06-28 142 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