我编写了一个称为Normalization()的函数,该函数对带有几个参数的数据帧进行归一化,但是最重要的一个是我指定了要归一化的数据帧对象,然后根据其他参数对其进行归一化数据框。函数中大约有5个参数,其中1个是我要传递的数据帧,其他4个是我要标准化的数据点,每个点都指向其唯一的特定R源文件。
Normalization <- function(dataframe, locationnormind, unitnormind, transportationind, transportdatajoinind)
基于传递给其他非数据帧函数参数(如果值为“ Y”)的函数,该函数将执行源命令。
if(locationnormind == "Y"){ { #location normalization.
print("You want location normalizations")
sys.source("FilePathSourceIMadethisUp\locationnorm.R", chdir = TRUE, list(dataframe1 = dataframe), keep.source = FALSE)}
}else
print("You don't want location normalizations")
当我对函数进行以下调用时:
Normalization(dataframe = cl1, locationnormind = "Y", unitnormind = "N", transportationind = "N", transportdatajoinind = "N")
它将正确打开locationnorm.R文件并执行它。但是,这就是问题所在。我已经知道这个locationnorm.R文件可以识别源文件中没有的数据框名称(我在Normalization函数中传递的数据框的名称是cl1,但是源文件中的数据框值是dataframe1,而dataframe1不是全局环境中的数据框对象)
dataframe1$AccpLocation <- plyr::mapvalues(dataframe1$AccpLocation,
from=location$AcceptingLocation,
to=location$LocationNormalized)
该函数正确执行mapvalues函数,在另一个数据框中找到值,将其映射,但随后不将其推送到我需要的环境中。我希望此函数然后在Normalization()函数中更新原始传递的dataframe参数。我已经尝试了sys.source和source()的每个参数,但对此没有任何运气。
为了澄清起见,cl1对象是一个具有约57列的数据框,而位置是一个有4列的数据框。
谢谢。