我有一个看起来像这样的数据框:
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"
但是,当我尝试map
或walk
数据时,我得到一个错误:
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(文件,模式):无效的'描述'参数
答案 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)
}