3

ファイルを読み込むと、R は次のようなリストを返します:
list 1: "1)" "Seo " "agad " "na " "ciad " "faclan " "a "
list 2: "cannteil " "(canntail) " "a-staigh" "dhan" "
list 3: "2)" "Seo" "sinn, " "sin" "direach" "fuirich…"

私が望むのは、[[i]] の最初の要素に数字がある場合、[[i]] の他の要素も同じ数字を取得し、[[i]] の最初の要素が [[i]] の場合、ベクトルを取得することです。に番号がない場合、[[i]] 内のすべての要素には、次のように、前の行に示されている番号が含まれます。

"1\t1)" "1\tSeo" "1\tagad" "1\tna" "1\tciad" "1\tfaclan" "1\ta" .... "2\t2)" "2\tseo "、2\tsinn....

誰か私にこれのコードを教えてもらえますか? また、各単語の前に貼り付けずに、各単語に対応する番号のみを含むベクトルを取得する方法はありますか?

ありがとうございました

私のコードは次のとおりでしたが、必要なものが得られませんでした (リスト内の番号 2 で始まる要素であっても、すべての要素が番号 1 になります)。コードのどの部分が間違っていますか?

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) 
     }
4

2 に答える 2

4

次のようなリストのリストがあると仮定します...

 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 桁で、行が次々に並べられている限り、任意の数の行と行の長さを処理できます。

これが何のためにあるのかにもよりますが、おそらくデータを読み取って保存するためのより良い方法があります。

于 2012-10-07T10:44:11.667 に答える