我正在使用R 3.1和RStudio 0.99运行矩阵.
我有我的R脚本和cmd +输入它没有问题.
我为报告创建了一个Rmd,但是我有这个错误
Error in lazyLoadDBinsertVariable(vars[i], from, datafile, ascii, compress, :
long vectors not supported yet: ../../../../R-3.3.1/src/main/connections.c:5600
Calls: <Anonymous> ... <Anonymous> -> <Anonymous> -> lazyLoadDBinsertVariable
Execution halted
Run Code Online (Sandbox Code Playgroud)
有没有办法绕过这个错误?
但不同之处在于,这仅在尝试创建Rmd时发生,而不是在任何其他情况下
在R中我们都知道,对于那些我们想要确保处理整数以使用"L"后缀来指定它的方式来说这很方便:
1L
# [1] 1
Run Code Online (Sandbox Code Playgroud)
如果我们没有明确告诉R我们想要一个整数,它会假设我们打算使用numeric数据类型......
str( 1 * 1 )
# num 1
str( 1L * 1L )
# int 1
Run Code Online (Sandbox Code Playgroud)
为什么"L"是首选后缀,为什么不是"我"呢?有历史原因吗?
另外,为什么R允许我做(有警告):
str(1.0L)
# int 1
# Warning message:
# integer literal 1.0L contains unnecessary decimal point
Run Code Online (Sandbox Code Playgroud)
但不是..
str(1.1L)
# num 1.1
#Warning message:
#integer literal 1.1L contains decimal; using numeric value
Run Code Online (Sandbox Code Playgroud)
我希望两者都返回一个错误.
我需要加载一个3 GB的csv文件,其中包含大约1800万行和7列从S3到R或RStudio.我从S3读取数据的代码通常是这样的:
library("aws.s3")
obj <-get_object("s3://myBucketName/aFolder/fileName.csv")
csvcharobj <- rawToChar(obj)
con <- textConnection(csvcharobj)
data <- read.csv(file = con)
Run Code Online (Sandbox Code Playgroud)
现在,由于文件比平时大得多,我收到一个错误
> csvcharobj <- rawToChar(obj)
Error in rawToChar(obj) : long vectors not supported yet: raw.c:68
Run Code Online (Sandbox Code Playgroud)
阅读这篇文章,我理解向量太长但在这种情况下如何对数据进行子集化?还有其他建议如何处理从S3读取的较大文件?
我有一个相当大的数据集(约 50K 条目),我用它来生成相关矩阵。这效果很好,“仅”使用约 20GB RAM。
然后,我想从中提取唯一的成对组合并将其转换为数据框。这就是我遇到问题的地方。RAM 使用量过多或索引变量溢出。我知道有 >2B 的组合,所以我知道它的大小有点爆炸,但仍然..
我尝试了不同的方法来实现这一目标,但没有成功。
模拟数据:
df = matrix(runif(1),nrow=50000, ncol=50000, dimnames=list(seq(1,50000,by=1), seq(1,50000,by=1)))
Run Code Online (Sandbox Code Playgroud)
尝试从相关矩阵中提取上/下三角形,然后重塑它:
df[lower.tri(df, diag = T),] = NA
df = reshape2::melt(df, na.rm = T)
Run Code Online (Sandbox Code Playgroud)
崩溃:
Error in df[lower.tri(bla, diag = T), ] = NA :
long vectors not supported yet: ../../src/include/Rinlinedfuns.h:522
Run Code Online (Sandbox Code Playgroud)
如果您只执行以下操作,它会因相同的错误而崩溃:(df = df[lower.tri(df, diag = T),]
我确实阅读了R 中的大型矩阵:尚不支持长向量,但我发现它对我的情况没有帮助)
我也尝试过:
df = subset(as.data.frame(as.table(df)),
match(Var1, names(annotation_table)) > match(Var2, names(annotation_table)))
Run Code Online (Sandbox Code Playgroud)
仅使用基于 R 的软件包,但最终在大约 1 天后耗尽了内存。这是 RAM 最密集的部分:as.data.frame(as.table(df))所以我也尝试用它替换它reshape2::melt(df),但它也耗尽了 RAM
我在具有 …
r ×4
amazon-s3 ×1
csv ×1
duplicates ×1
integer ×1
knitr ×1
large-data ×1
matrix ×1
parsing ×1
r-markdown ×1
rstudio ×1
semantics ×1