【发布时间】:2014-11-23 22:45:06
【问题描述】:
您好,我正在编写一个函数来读取文件并返回时间序列。然后我需要将此时间序列分配给一个变量。我试图以简洁的方式做到这一点,并利用 R 的任何函数式编程特性。
# read a file and returns the
readFile <- function( fileName , filePath){
fullPath <- paste(filePath, filename, sep='');
f <- as.xts(read.zoo(fullPath, format='%d/%m/%Y',
FUN=as.Date, header=TRUE, sep='\t'));
return(na.locf(f));
}
filePath <- 'C://data/'
# real list of files is a lot longer
fnames <- c('d1.csv', 'd2.csv','d3.csv');
varnames <- c('data1', 'data2', 'data3');
在上面的代码中,我想通过将 readfile 函数应用于 fnames 和文件路径(它始终是常量),以 data1、data2、data2 的名称初始化变量。
类似:
lapply( fnames, readFile, filePath);
当然,上述方法不起作用,它也没有执行我想要实现的动态变量分配。有任何 R 函数式编程大师可以指导我吗?
这个的工作版本看起来像:
data1 <- readFile( 'd1.csv', filepath);
data2 <- readFile( 'd2.csv', filepath);
哎呀
【问题讨论】:
-
感谢 shadow - 是的,它部分重复,但我也想了解如何使用 lapply 来实现许多变量,因为我是 FP 新手。
-
如果你真的想这样做(阅读链接问题中的 cmets:不要这样做),你可以使用
mapply(FUN=assign, x=varnames, value=data, MoreArgs=list(envir=.GlobalEnv))
标签: r functional-programming lapply