Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 具有两列参数的lappy_R_Data.table_Lapply - Fatal编程技术网

R 具有两列参数的lappy

R 具有两列参数的lappy,r,data.table,lapply,R,Data.table,Lapply,这是我的数据帧 library(data.table) df <- fread(' Account Date NextDate A 2016-01-01 2016-02-01 A 2016-02-01 2016-11-05 B 2016-03-10 2016-11-05') ab <

这是我的数据帧

library(data.table)
df <- fread('
            Account       Date        NextDate
            A          2016-01-01     2016-02-01
            A          2016-02-01     2016-11-05
            B          2016-03-10     2016-11-05')


ab <- fread('
      Date       Amount
     2015-06-01     55
     2016-01-31     55
     2016-02-28     65
     2016-03-31     75')
这是我的尝试:

list<- lapply(df$Date, function(x,y) br[Date > x & Date < y ],y=df$NextDate)
列表x&Date
创建一个向量,检查
ab
行是否符合您的条件,然后使用它选择
ab

lapply(1:nrow(df), function(x) {
  ab[which(ab$Date > df[x, get("Date")] & ab$Date < df[x, get("NextDate")]), ]
})
lappy(1:nrow(df),函数(x){
ab[其中(ab$Date>df[x,get(“Date”)]&ab$Date
这可能不符合数据帧的传统,但如果您来自base-R背景,我认为逻辑相当清楚。data.table“[”函数需要在列表中包含不带引号的列名,以便只传递列值:

apply( df[, list(Date,NextDate)] , 1, 
       function(dts)  ab[ ab$Date > dts['Date'] & ab$Date < dts['NextDate'],  ])
[[1]]
         Date Amount
1: 2016-01-31     55

[[2]]
         Date Amount
1: 2016-02-28     65
2: 2016-03-31     75

[[3]]
         Date Amount
1: 2016-03-31     75
apply(df[,list(Date,NextDate)],1,
函数(dts)ab[ab$Date>dts['Date']&ab$Date
您可以使用应用:

apply(df, 1, function(x) ab[ab$Date>x[2] & ab$Date<x[3],])

apply(df,1,函数(x)ab[ab$Date>x[2]&ab$Date感谢您的回答!不客气。您可以通过向上投票并选择我的答案来更好地感谢我!感谢您的回答!感谢您的回答!
apply(df, 1, function(x) ab[ab$Date>x[2] & ab$Date<x[3],])