根据两个条件分配值(非平凡)

时间:2017-06-09 09:55:41

标签: r database date methods variable-assignment

我有一个非常简单的方法,它按以下方式为我的列表分配值: 1.它转到带文件的文件夹 2.使用我设置的银行编号检查是否存在文件 3.如果它存在,它会从特定日期获取数据,我再次在此方法中设置 这是方法:

balancesheet.list <- getBalanceSheet_list("2016-04-01",1481)

因此,在此特定示例中,它将转到文件夹,获取编号为1481的文件,并将此文件中的日期2016-04-01数据分配给我的列表。

我需要为每个我需要的日期分配此文件夹中所有文件的数据。有关每个特定日期和银行编号的数据应记录在单独的子列表中或仅记录在单独的列表中。 更详细地说,我需要为每个银行编号分配从2007-04-01开始到2017-01-01的数据。 我创建了两个csv文件:一个具有我需要的日期范围的月份:

2007-02-01
2007-03-01
2007-04-01
2007-05-01
2007-06-01
...
2016-11-01
2016-12-01
2017-01-01

和第二个银行号码我一般:

1
2
21
52
53
55
...
3525
3527
3528
3529
3533

我的想法是在R中导入这些文件并改为使用#34; 2016-04-01&#34;然而,正如我所见,这是个糟糕的主意。

此外,我决定尝试使用以下代码,而不是导入任何文件:

balancesheet.list<- getBalanceSheet_list(seq(as.Date("2007-04-01"), as.Date("2017-01-01"), by="months"),1481) 

R给出错误: 论证的长度&#34;模式&#34;是> 1,只使用第一个元素

据我所知,问题是它试图从1个列表中的多个月分配数据。也许可以说它是按每个单独日期的列表或子列表记录数据的?

两种想法中的任何一种如何实现现代化?请帮忙。

1 个答案:

答案 0 :(得分:1)

您可以尝试

lapply(seq(as.Date("2007-04-01"), as.Date("2017-01-01"),by="months"),getBalanceSheet_list,1481)

这应该为您提供所有日期的文件1481的数据。我说'sholud'是因为当你不提供getBalanceSheet_list函数的任何细节时很难确定;)

不,我们可以做一个功能

one_file <- function(file) lapply(seq(as.Date("2007-04-01"), as.Date("2017-01-01"),by="months"),getBalanceSheet_list, file)

并为所有文件执行它。但首先我们需要一个带有名字的矢量,比如说:

files<-c(1, 2, 21, ...)

显然,你必须将...改为numers。我不能这样做,因为你没有提供它们(再次):)

现在

lapply(files, one_file)

sholud为您提供所需的所有信息。

您也可以将所有lapply替换为sapply。如果仅getBalanceSheet_list返回一些漂亮的对象(如矢量或单值),这将使结果看起来更漂亮。