2012-10-07 118 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个数字,并且这些线彼此排列。

根据这是什么,可能有更好的方式来读取和存储数据。

相关问题