我想要做的是在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中以这种方式设置和调用名称的正确语法?
感谢。
答案 0 :(得分:-2)
我相信你正在寻找assign
。
prefix = "E14_AD_4hr_"
var_name = sprintf("%s_Asz1", prefix)
assign(var_name, read.table(...))
请注意,如果在函数内部调用assign,则可能必须小心插入的environment
。您当然可以始终分配到.GlobalEnv
,或者您可以调用parent.env()
在堆栈框架中跳转一层。
如果您稍后需要调用这些生成的名称,则可能需要parse
和eval
。例如,如果我们在变量名中存储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