我正在尝试对R中数据框的每一行进行计算,并将计算附加为框架中的新列。我开始使用“by”函数,但计算速度非常慢,所以我改用“apply”函数。我想象它的工作方式是使用我的函数运行 apply ,将输出保存到变量并将该数据附加到原始数据框中。
我创建了一个函数来计算保险计划的期限长度并返回该值,这在样本数据集上运行良好。当我使用较大的数据集时,出现“无法分配大小的向量 ...”的错误。我知道很多人建议使用更多的 RAM,但我已经有 16GB 的内存,并且在R中加载了整个数据集,我的计算机说它只使用了 7.7GB 的内存。该数据集有 44 列,约 1100 万条记录,所以我没有看到再添加一列数据会占用 8GB 内存?
朝着正确方向的任何一点都会很棒。
以下是我正在使用的功能:
get_term_length <- function(row_data){
# convert values to dates
expiration_date <- as.Date( row_data[42] )
start_date <- as.Date( row_data[43] )
cancellation_date <- as.Date( row_data[44] )
# check to see if the cancellation date is NA - just use entire policy length
if( is.na(cancellation_date) ){
return( expiration_date - start_date) )
}
# check to see if policy was cancelled early
if(cancellation_date < expiration_date){
return( cancellation_date - start_date )
}
# the policy was for the entire term
else{
return( expiration_date - start_date )
}
}
我一直在通过调用来运行该函数:
tmp <- apply(policy_data, 1, get_term_length)