如何循环文件,然后匹配部分字符串并获取相应的值R.

时间:2017-09-20 23:12:29

标签: r

这一定很简单,但我真的很困惑。我在/mydir中有很多文件。例如 -

list.files("/mydir")中的文件:

myfiles <- c("new_Ago2_1_LTR_assembly.csv", "new_Ago2_2_LTR_assembly.csv", 
"new_DCLd_1_LTR_assembly.csv", "new_DCLd_2_LTR_assembly.csv", "not_wanted_files")

所有这些文件都采用以下格式:

  length      A      C      G      T
1     18   1890   3328   1646   3067
2     19   4444   8221   4914   8668
3     20  12090  18073  12903  19726
4     21  38719  35510  30843  41125

我想循环遍历myfiles中的所有文件,并通过下面的列表(Ago2_1,Ago2_2,DCLd_1,DCLd_2)与文件名进行部分匹配,我想在{{{{}}中放置相应的值1}}在下面的数据帧划分代码中。

getvalue

以下是代码:

Ago2_1  <-  29,911,751
Ago2_2  <-  29,564,885
DCLd_1  <-  67,004,254
DCLd_2  <-  77,682,528

getvalue <-      #this is where I am confused- how can I do the partial match with the file name and put the respective value?!!

1 个答案:

答案 0 :(得分:0)

我们可以创建命名向量,然后使用grep来获取使用grepl的索引:

# lookup values 
myValues <- setNames(c(29911751, 29564885, 67004254, 77682528), 
                     c("Ago2_1","Ago2_2","DCLd_1","DCLd_2"))

# For loop start
# testing
# i = myfiles[1]

# get value
ix <- which(sapply(names(myValues), function(j)grepl(j, i)))
getvalue <- myValues[ ix ]

# For loop end