多年映射功能并使用数据框

时间:2019-06-07 16:22:18

标签: r

我有一个看起来像这样的数据框:

ID  text  year  DATE
G45 txt1 2010  01/01/2010
G45 txt2 2011  01/01/2011
G45 txt3 2012  01/01/2012
B78 txt4 2010  01/01/2010
B78 txt5 2011  01/01/2011
C12 txt6 2013  01/01/2013

我可以从上面的df收集年份,因此我将具有以下唯一值:

year_to_process <- c("2010", "2011", "2012", "2013")

我的功能定义如下:

1)我按年过滤,因为我只对从t年到t-1年的余弦计算感兴趣。

2)我将文本放入VCorpus中并清理

3)我计算余弦矩阵

4)我将余弦矩阵保存到文件

text_to_cosine <- function(x){
data <- x %>% filter(year == year_to_process | year == year_to_process - 1)
# some additional text cleaning
cosine_matrix <- cosine(data)
saveRDS(cosine_matrix, file = cosine_matrix.rds)
}

当我执行以下操作时,代码将起作用:year_to_process <- "2012"  但是,当我尝试mapwalk数据时,我得到一个错误:

  
    

walk(text_to_cosine,year_to_process).x [[i]]错误:“ closure”类型的对象不可子集化

         

map(text_to_cosine,year_to_process)错误:.x不是向量(关闭)

  

我怎样才能做到每一年都能觅食?

即 1)获取2010年的数据和流程

2)获取2011年和2010年的数据和流程

3)获取2012年和2011年的数据和过程

4)获取2013年和2012年的数据和过程

编辑:

这是功能

text_to_cosine <- function(x){
  data <- x %>% filter(filing_date_year == year_to_process | filing_date_year == year_to_process - 1)
…
}

我现在认为错误来自filter部分。可能是第一年(例如2005年)没有t-1并导致错误吗?

EDIT2:

应用以下内容时,出现以下错误:

text_to_cosine <- function(x, year_to_process){
  data <- x %>% filter(filing_date_year == year_to_process | filing_date_year == year_to_process - 1)
…
}
  

text_to_cosine(df,year_to_process)   gzfile(文件,模式)错误:无效的'description'参数   另外:警告消息:如果if(file ==“”)stop(“'file'必须是   非空字符串“):显示回溯重新运行,并且出现调试错误   gzfile(文件,模式):无效的'描述'参数

1 个答案:

答案 0 :(得分:1)

您似乎混合了x和函数的输入:

text_to_cosine <- function(year_to_process){
    data <- x %>% filter(year == year_to_process | year == year_to_process - 1)
    # some additional text cleaning
    cosine_matrix <- cosine(data)
    saveRDS(cosine_matrix, file = cosine_matrix.rds)
    }