R:根据当前名称的内容为数据框提供新名称

时间:2016-03-10 01:42:23

标签: r loops if-statement dataframe

我正在编写一个脚本来绘制来自多个文件的数据。每个文件都使用相同的格式命名,其中“。”之间的字符串提供有关文件内容的一些信息。例如,SITE.TT.AF.000.52.000.001.002.003.WDSD_30.csv。这些数据来自多个站点,因此“站点”或“WDSD_30”或任何其他字符串可能会有所不同,具体取决于数据的来源,尽管它在文件名中的位置始终表示特定功能,例如位置或测量。

到目前为止,我将每个文件读入R并保存为与文件名称相同的数据框。我希望得到类似下面的内容:如果全局环境中有一个包含“WDSD_30”的数据框,则绘制该数据框中的特定列。该列将始终具有相同的名称,因此我可以编写绘图(WDSD_30 $ meas),无论在全局环境中加载了哪个站点的文件,脚本都会找到“WDSD_30”文件并绘制“meas”变量。我对此脚本的目标是能够将其指向包含特定站点文件的任何文件夹,无论站点是什么,脚本都能够读取数据并查找包含我感兴趣的变量的文件。密谋。

一位同事建议我尝试使用strsplit()来分解文件名并提取我想要使用的元素,然后使用它来重命名包含该元素的数据框。我一直坚持如何做到这一点,或者这是否是最好的方法。

这是我到目前为止所拥有的

site.files<- basename(list.files( pattern = ".csv",recursive = TRUE,full.names= FALSE))

sfsplit<- lapply(site.files, function(x) strsplit(x, ".", fixed =T)[[1]])

for (i in 1:length(site.files)) assign(site.files[i],read.csv(site.files[i]))

for (i in 1:length(site.files)) 
if (sfsplit[[i]][10]==grep("PARQL", sfsplit[[i]][10])) 
{assign(data.frame.getting.named.PARQL, sfsplit[[i]][10])}
else if (sfsplit[i][10]==grep("IRBT", sfsplit[[i]][10]))
{assign(data.frame.getting.named.IRBT, sfsplit[[i]][10])

......等等我想最终绘制的每个数据框。这是一个好方法,还是有更好的方法?我也不清楚如何引用我为这个例子编写的对象,“data.frame.getting.named.xxxx”,而不使用整个文件名,因为它被读入R.有类似data.frame的东西[1]通常是指全球环境中的第一个数据框

0 个答案:

没有答案