R 在数据框中循环并绘制图形
我在RStudio工作,试图制作一些简单的图表和关联。这可能是一个超级简单的修复,但我似乎无法循环浏览我的文件并生成绘图。有关文件、循环和示例数据帧,请参见下文R 在数据框中循环并绘制图形,r,loops,ggplot2,R,Loops,Ggplot2,我在RStudio工作,试图制作一些简单的图表和关联。这可能是一个超级简单的修复,但我似乎无法循环浏览我的文件并生成绘图。有关文件、循环和示例数据帧,请参见下文 > ls() [1] "let-7b-5p" "let_7a_5p" "miR_125b_5p" "miR_16_5p" "miR_182_5p" "miR_21_5p" "miR_30e_5p" "miR_320c_2_3p" "miR_92a_1_3p" "miR_92b_3p"
> ls()
[1] "let-7b-5p" "let_7a_5p" "miR_125b_5p" "miR_16_5p" "miR_182_5p" "miR_21_5p" "miR_30e_5p" "miR_320c_2_3p" "miR_92a_1_3p" "miR_92b_3p"
[10] "rRNA-45S" "tRNA_3p_1" "tRNA_5p_2"
> files <- ls()
> for(i in files){
+ plt <- ggplot(`i`, aes_string(x="Five", y = "Three")) +
+ geom_point(shape=16) +
+ geom_smooth(method=lm)
+ print(plt)
+ pearson <- cor.test(`i`$Five, `i`[, "Three"], method = "pearson", conf.level = 0.95)
+ print(pearson)
+ }
Error: `data` must be a data frame, or other object coercible by `fortify()`, not a character vector
> print(`let-7b-5p`)
Five Three One
A 14.06 13.14 13.62
B 14.45 14.64 14.21
C 7.84 10.23 8.05
D 12.84 13.13 13.07
E 16.55 15.97 16.01
F 12.92 12.02 12.37
>ls()
[1] “let-7b-5p”“let_7a_5p”“miR_125b_5p”“miR_16_5p”“miR_182_5p”“miR_21_5p”“miR_30e_5p”“miR_320c_2_3p”“miR_92a_1_3p”“miR_92b_3p”
[10] “rRNA-45S”“tRNA\U 3p\U 1”“tRNA\U 5p\U 2”
>文件(文件中的i){
+plt当函数(ggplot
此处)需要数据时,将字符串作为字符向量传递。帧
在循环中不起作用,原因与它在循环外不起作用相同…R不知道从全局环境中检索给定名称的对象
我建议(类似于@patL的注释)检索对象,然后运行循环:
for(i in files){
dat <- get(i) # new line
plt <- ggplot(dat, aes_string(x="Five", y = "Three")) +
...
}
for(文件中的i){
dat您想使用ls()
,这是一个带有对象名称的字符向量来制作图表吗?如果是这样,您必须将ls()对象解析为eval
和parse
。例如,对于第一个对象:eval(parse(text=ls()[1])
我不需要使用ls(),但我已经导入了我的文件(使用一个单独的循环)我需要一种方法来列出它们以传递到绘图循环。在您的示例中,文件是ls()
。例如,执行class(文件[1])
,并检查它返回给您的内容。“let-7b-5p”不同于“let-7b-5p
”,添加get(I)完成了这个技巧,我现在理解了错误。谢谢!