我正在使用R进行转换,这是我的代码。
convert_word_vector <- function(df, vecMap, n) {
if(exists("result")) {rm(result)}
for (row_name in row.names(df)) {
vec <- vecMap[[row_name]]
if(is.null(vec)) {
vec <- data.frame(t(rep(0,n)))
}
colnames(vec) <- paste(row_name, colnames(vec), sep="_")
merge_value <- merge(t(df[row_name, ]),vec)
val <- merge_value[[row_name]] * merge_value[-(1:1)]
if(!exists("result")) {
result <- val
} else {
result <- cbind(result, val)
}
}
return(result)
}
我用小数据集测试了它,一切都很好。然后我尝试一些具有相同维度的数据,如
a <- data.frame(replicate(43000,rnorm(8000)))
vec_map <- hash()
for(i in 1:7000) {
vec_map[[as.character(i)]] <- data.frame(replicate(200,rnorm(2)))[1,]
}
b <- convert_word_vector(a, vec_map, 200)
运行一段时间后,R会话中止了致命错误。这是因为数据太大或我的功能有问题吗? 我的会议信息:
R version 3.4.0 (2017-04-21)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: OS X El Capitan 10.11.3
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
可以计算'RAM:
8 GB 1600 MHz DDR3
任何建议将不胜感激。先感谢您。