我可以在数据框列中存储代码(.R文件)吗?

时间:2017-01-27 08:01:51

标签: r

我想将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

我无法对变量进行硬编码,我需要从此元数据表中提取变量,从其所属的表中获取变量的值,并应用元数据中指定的规则来获取输出。

提前非常感谢。

1 个答案:

答案 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

你可以自己整理输出并用它做你想做的任何事情,但上面包含你似乎想要做的基本原则。