2016-09-25 40 views
0

我想要做的是在R中设置一个名为“filename”的值,其中内容是文件名的第一部分。在R中设置和调用一个值作为文件名

名< - “E14_AD_4hr_”

然后我想用这个“文件名”的价值将通过的R脚本来创建两个名称和呼叫载体。

使用bash的$,语法将是这个样子:

名< - “E14_AD_4hr_”

$ filename_Asz1 < - 函数read.table(“〜/文档/ 1608_10_MiSeq /命名的文件夹2/E14-AD-4_S20_L001/Filtered_by_quality/E14-AD-4_S20_L001_Asz1/methylation.tsv “报价= ”\“”,comment.char = “”) 等

但这仅给我一个R.中的错误

为了让它正确运行脚本,我必须手动输入文件名的第一部分,这是一个痛苦和非常不雅(脚本更多,但我只发布第一行)。

E14_AD_4hr_Asz1 < - 函数read.table( “〜/文档/ 1608_10_MiSeq /命名文件夹2/E14-AD-4_S20_L001/Filtered_by_quality/E14-AD-4_S20_L001_Asz1/methylation.tsv”,报价= “\””, comment.char =“”)

基本上我问的是有没有人知道正确的语法设置并以这种方式叫一个名字,在R'

感谢。

+0

如果我们正在读取多个文件,最好将它们保存在一个列表中。名为“Asz1,Asz2,AszN”的列表中的每个数据对象。看到这[post](http://stackoverflow.com/questions/11433432/importing-multiple-csv-files-into-r) – zx8754

回答

-2

我相信你正在寻找assign

prefix = "E14_AD_4hr_" 

var_name = sprintf("%s_Asz1", prefix) 
assign(var_name, read.table(...)) 

请注意,如果你调用一个函数的内部分配,你可能要小心了environment你插入。您当然可以始终指定为.GlobalEnv,或者您可以拨打parent.env()在堆栈帧中跳转一层。

如果您需要稍后调用这些生成的名称,则可能需要parseeval。例如,如果我们在您的变量名称中存储10个随机数字:

prefix = "E14_AD_4hr_" 

var_name = sprintf("%s_Asz1", prefix) 
assign(var_name, rnorm(10)) 

# Get the string value back 
print(var_name) 
[1] "E14_AD_4hr__Asz1" 

# Convert to a language expression 
> print(parse(text = var_name)) 
expression(E14_AD_4hr__Asz1) 

# Evaluate in the current frame 
> print(eval(parse(text = var_name))) 
[1] -0.31945098 -0.54377885 -0.27967344 1.06523260 1.56782875 -0.64311208 0.02052175 -0.32418446 
[9] 1.85739602 0.59076400 
相关问题