我想将R代码文件存储在R数据框列中以防止变量。我的数据框架如下:
metadatatable1:
tablename variable applicableRcode
table1 address_key code1.r
table1 address_key code2.r
table1 zipcode code2.r
table2 address_key code3.r
dataframes - table1和table2:
table1
address_key zipcode
234567 560100
123456 560100
453678 560100
表2
address_key
54274238
58375235
是否可以将r代码文件添加为数据帧列值并执行相同的操作以获得低于输出的值?
tablename variable applicableRcode rcodeOutput
table1 address_key code1.r 98.5
table1 address_key code2.r 67.2
table1 zipcode code2.r 100.0
table2 address_key code3.r 22.8
我无法对变量进行硬编码,我需要从此元数据表中提取变量,从其所属的表中获取变量的值,并应用元数据中指定的规则来获取输出。
提前非常感谢。
答案 0 :(得分:0)
这里有三个文件,f1,f2和f3,它们都是一个单行R代码,它采用一个名为in1
的变量并将其答案存储在out
中:
f1.R
::::::::::::::
out = sqrt(in1)
::::::::::::::
f2.R
::::::::::::::
out = in1*in1
::::::::::::::
f3.R
::::::::::::::
out = in1 * sqrt(in1)
这是一个数据框:
> d = data.frame(in1 = c(1,2,3,4,5), f = c("f2.R","f1.R","f3.R","f3.R","f2.R"),stringsAsFactors=FALSE)
> d
in1 f
1 1 f2.R
2 2 f1.R
3 3 f3.R
4 4 f3.R
5 5 f2.R
现在,您可以遍历该数据框并调用source
:
> lapply(1:nrow(d),function(i){in1=d[i,"in1"];source(d[i,"f"],local=TRUE);out})
[[1]]
[1] 1
[[2]]
[1] 1.414214
[[3]]
[1] 5.196152
[[4]]
[1] 8
[[5]]
[1] 25
你可以自己整理输出并用它做你想做的任何事情,但上面包含你似乎想要做的基本原则。