在R

时间:2016-09-25 19:25:30

标签: r bash filenames

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

  

filename< - “E14_AD_4hr _”

然后,我想将这个'filename'值用于将通过R脚本创建的名称和调用向量。

使用bash $,语法看起来像这样:

  

filename< - “E14_AD_4hr _”

     

$ filename_Asz1< - read.table(“〜/ Documents / 1608_10_MiSeq / untitled folder 2 / E14-AD-4_S20_L001 / Filtered_by_quality / E14-AD-4_S20_L001_Asz1 / methylation.tsv”,quote =“\”“,评论.char = “”)   等

但这只会让我在R中出错。

为了让它正确运行脚本,我必须手动输入文件名的第一部分,这是一种痛苦而且非常不优雅(脚本还有更多内容,但我只发布了第一行)。 / p>

  

E14_AD_4hr_Asz1< - read.table(“〜/ Documents / 1608_10_MiSeq / untitled folder 2 / E14-AD-4_S20_L001 / Filtered_by_quality / E14-AD-4_S20_L001_Asz1 / methylation.tsv”,quote =“\”“,评论。炭= “”)

基本上我要问的是,是否有人知道在R中以这种方式设置和调用名称的正确语法?

感谢。

1 个答案:

答案 0 :(得分:-2)

我相信你正在寻找assign

prefix = "E14_AD_4hr_"

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

请注意,如果在函数内部调用assign,则可能必须小心插入的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