R 错误:应为单个值:[范围=10]

R 错误:应为单个值:[范围=10],r,function,dataframe,R,Function,Dataframe,我试图用R中的一个函数创建多个数据帧。我在这里找到了一些帮助我构建函数框架的东西,但我遇到了“错误:需要单个值:[extent=10]”问题 我有我正在过滤和分组的数据,如果我正在创建一个使用单个(x)值的数据帧,它本身就可以正常工作。当我尝试使用日期向量运行时,我得到了错误 请参阅下面的代码,希望它有意义: target<-#vector of dates as a character class test<-function(x) { listofevents<-

我试图用R中的一个函数创建多个数据帧。我在这里找到了一些帮助我构建函数框架的东西,但我遇到了“错误:需要单个值:[extent=10]”问题

我有我正在过滤和分组的数据,如果我正在创建一个使用单个(x)值的数据帧,它本身就可以正常工作。当我尝试使用日期向量运行时,我得到了错误

请参阅下面的代码,希望它有意义:

target<-#vector of dates as a character class

test<-function(x) {
    listofevents<-list()

    for (i in 1:length(x)){
      results<-mainDF %>% filter(between(Date, x - 30, x)) %>% 
      group_by(Name) %>% summarise(Total_Wins = sum(TotalW),Total_Records = n())
      listofevents[[i]]<-results
    }

    return(listofevents)
  }

  test(x=lubridate::mdy(target))

target如果您提供一个复制错误的
target
的小样本,它会有所帮助。这似乎就是您将向量传递到
left
right
dplyr::between
参数时得到的错误。文档中没有明确说明,但似乎表明BEVER是针对
x
进行矢量化的,而不是针对
left
right
(例如,示例显示长度>1的
x
,但
left
right
的单个值)。我建议只切换到
过滤器(x-30),如果你使用
介于
之间的语法,你可以切换到
data.table::between
,这样做很有效。谢谢Gregor。这非常接近。它给了我输出,但它会重复结果10次,而不是(x)中10个不同日期的结果.我还收到20条警告,上面写着"在
中,如果您提供一个复制错误的
target
小样本,这会有所帮助。这似乎是您将向量传递到
left
right
dplyr::between
参数时得到的错误。文档没有明确说明,但似乎表明between是为向量化的ode>x
,但不适用于
left
right
(例如,示例显示长度>1的
x
,但是
left
right
的单个值)。我建议只切换到
过滤器(x-30如果您使用
介于
之间的语法,您可以切换到
数据。table::between
这种方式工作。谢谢Gregor。这非常接近。它给了我输出,但它重复了10次结果,而不是(x)中10个不同日期的结果。我还收到20条警告,上面写着“in