是否可以这样替换for循环:
public TEntity GetById(object id){
var entity = connection.Get<TEntity>(id);
if (entity is ITranslatable t)
{
t.Translator = _translationService;
}
return entity;
}
使用lapply或其他方法来减少执行时间?
答案 0 :(得分:1)
构建数据帧列表并在循环外rbind 一次,并避免在循环内使用rbind
进行二次复制:
df_list <- lapply(df$text, function(txt) {
out <- liwcalike(txt, dictionary = data_dictionary_NRC)
return(data.frame(em1 = out$trust, em2= out$anger, origin=txt))
}
final_df <- do.call(rbind, df_list)
如果liwcalike
调用出现任何问题,请在tryCatch
中包装过程以在发生任何错误时返回NA
行数据帧:
df_list <- lapply(df$text, function(txt) {
tryCatch({
out <- liwcalike(txt, dictionary = data_dictionary_NRC)
return(data.frame(em1=out$trust, em2=out$anger, origin=txt, error=NA))
}, error = function(e)
data.frame(em1=NA, em2=NA, origin=txt, error=e)
)
}
final_df <- do.call(rbind, df_list)