2012-10-07 53 views
1

我在一個文件中讀取和R返回一個列表,這樣的:
列表1: 「1)」, 「徐」 「agad」 「NA」 「CIAD」 「faclan」, 「一個」
列表2 : 「cannteil」 「(canntail)」, 「A-staigh」 「香谷」「
表3: 」2)「 」搜索引擎優化「, 」新芬「, 」贖罪「, 」direach「 」fuirich ......「循環遍歷列表中的每個元素並將數字添加到每個項目。 ,使用R

我想得到一個向量,如果[[i]]中的第一個元素有一個數字,那麼[[i]]中的其他元素也會得到相同的數字,如果[[i]]中的第一個元素不會'沒有數字,那麼[[i]]中的所有元素將具有前一行中顯示的數字,如下所示:

「1 \ tSeo」「1 \ tagad」「1 \ tna」「1 \ tciad」「1 \ tfaclan」「1 \ ta」...... 「2 \ t2)」「 2 \ tseo「,2 \ tsinn ....

任何人都可以告訴我這個代碼嗎?而且,有沒有辦法得到一個只包含對應每個單詞的數字的矢量,而不需要在每個單詞前粘貼它?

謝謝

我的代碼是下面的,但它並沒有給我我想要的(所有元素得到了1號,甚至沒有在這個名單開始數2)的 哪一部分代碼錯了?

word="" 
temp="" 
for (i in 1:length(file)) { 
     if (grepl('\\d+\)',file[[i]][1])) {  
     snum=grep('\\d+',file[[i]][1]) 
     temp=paste(snum, file[[i]], sep="\t") 
     } else { 
     temp=paste(snum,utter.short[[i]],sep="\t") 
     } word=c(word,temp) 
    } 
+2

歡迎來到Stack Overflow!請爲我們提供一個可重複的示例http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

表單問題「你能告訴我這個代碼嗎?」這裏一般不會回答。本網站最適合回答關於您已經在研究的具體問題的問題。正如@RomanLuštrik所說,如果你有一塊顯示你的嘗試,你就更有可能獲得幫助。 – Richard

回答

2

假設你有一個像列表的列表...

list1 = list("1)" "Seo " "agad " "na " "ciad " "faclan " "a ") 
list2 = list("cannteil " "(canntail) " "a-staigh " "dhan ") 
list3 = list("2)" "Seo " "sinn, " "sin " "direach " "fuirich…") 

biglist = list(list1, list2, list3) 

這裏是一個非優雅/非有效的解決方案與此設置

counter = 1 
for (i in 1:length(biglist){ 
if (gsub("\\D", "", biglist[[i]][[1]])>0){ 
    counter = gsub("\\D", "", biglist[[i]][[1]] 
    biglist[[i]] = biglist[[i]][2:length(biglist[[i]])] 
    } 
lapply(counter, paste, biglist[[i]], sep="\t") 
} 

這可能工作處理任意數量的線和線的長度,只要第一項有1個數字,並且這些線彼此排列。

根據這是什麼,可能有更好的方式來讀取和存儲數據。

相關問題