我正在尝试使用data.table根据特定条件重新编码变量.我的原始数据集有大约30M的记录,并且所有变量创建后大约有130个变量.我使用了这里建议的方法:data.table (M1)中的条件语句以及data.table:当列名不知道时,是否有正确的方法来创建条件变量? (M2)
我的目标是获得相当于下面的代码,但使用data.table是适用的
samp$lf5 <- samp$loadfactor5
samp$lf5 <- with(samp, ifelse(loadfactor5 < 0, 0, lf5))
Run Code Online (Sandbox Code Playgroud)
我承认我不理解.SD和.SDCols,所以我可能错了.来自(M1)和(M2)的代码和错误如下所示,样本数据集如下:http://goo.gl/Jp97Wn
(M1)
samp[,lf5 = if(loadfactor5 <0) 0 else loadfactor5]
Run Code Online (Sandbox Code Playgroud)
错误信息
Error in `[.data.table`(samp, , lf5 = if (loadfactor5 < 0) 0 else loadfactor5) :
unused argument (lf5 = if (loadfactor5 < 0) 0 else loadfactor5)
Run Code Online (Sandbox Code Playgroud)
当我这样做:
samp[,list(lf5 = if(loadfactor5 <0) 0 else loadfactor5)]
Run Code Online (Sandbox Code Playgroud)
它将lf5作为列表但不作为samp data.table的一部分给出,并且并不真正应用条件,因为lf5仍然具有小于0的值.
(M2)
Col1 <- "loadfactor5"
Col2 <- "lf5"
setkeyv(samp,Col1) …Run Code Online (Sandbox Code Playgroud) 我需要创建一个文本文件(aptest.s),我可以用来读入另一个程序.我正在使用Perl,因为我有一个很大的列表可供使用.我的代码如下(它没有给出所需的输出 - 显示在代码和实际输出之后).任何帮助,将不胜感激.
#!/usr/bin/perl -w
chdir("D://projects//SW Model ODME");
@link = ("319-116264||319-118664","320-116380||320-116846","321-119118||321-119119","322-115298||322-119087");
@link1 = ("116264-319||118664-319","116380-320||116846-320","119118-321||119119-321","115298-322||119087-322");
open (FSAS, ">>aptest.s");
foreach $link (@link) {
foreach $link1 (@link1){
print FSAS "other code \n";
print FSAS "PATHLOAD SELECTLINK=(Link=".$link."), VOL[2]=MW[1] \n";
print FSAS "PATHLOAD SELECTLINK=(Link=".$link1."), VOL[3]=MW[2] \n";
print FSAS "other code \n";
}
}
Run Code Online (Sandbox Code Playgroud)
实际产量:
other output
PATHLOAD SELECTLINK=(Link=319-116264||319-118664), VOL[2]=MW[1]
PATHLOAD SELECTLINK=(Link=116264-319||118664-319), VOL[3]=MW[2]
other output
other output
PATHLOAD SELECTLINK=(Link=**319-116264||319-118664**), VOL[2]=MW[1]
PATHLOAD SELECTLINK=(Link=**116380-320||116846-320**), VOL[3]=MW[2]
other output
Run Code Online (Sandbox Code Playgroud)
期望的输出
other output
PATHLOAD SELECTLINK=(Link=319-116264||319-118664), VOL[2]=MW[1]
PATHLOAD SELECTLINK=(Link=116264-319||118664-319), …Run Code Online (Sandbox Code Playgroud) 我有一个15.4GB的R data.table对象,有2900万条记录和135个变量.我的系统和R信息如下:
Windows 7 x64 on a x86_64 machine with 16GB RAM."R version 3.1.1 (2014-07-10)" on "x86_64-w64-mingw32"
Run Code Online (Sandbox Code Playgroud)
我得到以下内存分配错误(见图)

我设置内存限制如下:
#memory.limit(size=7000000)
#Change memory.limit to 40GB when using ff library
memory.limit(size=40000)
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
我试图发布一个包含1000个分隔符的表,我对此没有任何好运.我按照这里的链接:在knitr上设置全局千位分隔符,但没有取得多大成功.
我的样本数据集在这里:https://goo.gl/G7sZhr
RMarkdown代码在这里:
---
title: "Table Example"
author: "Krishnan Viswanathan"
date: "August 4, 2015"
output: html_document
---
Run Code Online (Sandbox Code Playgroud)
加载数据
{r, results='asis', message = FALSE, tidy=TRUE}
load("i75_from_flow.RData")
library(data.table)
{r, results='asis', echo=FALSE,message = FALSE, tidy=TRUE}
i75_from_flow <- i75_from_flow[order(-Tons),]
knitr::kable(i75_from_flow)
但是,当我在RMarkdown文档中包含这段代码(knit_hook $ set)时,我会收到错误.
```{r, results='asis', echo=FALSE,message = FALSE, tidy=TRUE}
i75_from_flow <- i75_from_flow[order(-Tons),]
knit_hooks$set(inline = function(x) {
prettyNum(x, big.mark=",")
})
knitr::kable(i75_from_flow)
```
Run Code Online (Sandbox Code Playgroud)
错误:
# object knit_hooks not found.
Run Code Online (Sandbox Code Playgroud)
任何关于我做错了什么以及如何解决这个问题的见解都非常感谢.
谢谢,
克里希南
我正在尝试使用该circlize库绘制流程图。我的代码在下面,数据集 (i75_from_flow.RData) 在这里:https ://drive.google.com/file/d/0B0hTmthiX5dpbFJFc2hfN1Zqd1k/view
library(reshape)
t1 <- cast(i75_from_flow, ORIGFIPS ~ TERMFIPS)
i75_from_flow2<- data.matrix(subset(t1, select=-c(1)))
rownames(i75_from_flow2) <- t1$ORIGFIPS
colnames(i75_from_flow2) <- colnames(i75_from_flow2)
library(circlize)
circos.par(gap.degree = 8)
chordDiagram(i75_from_flow2, grid.col= length(union(rownames(i75_from_flow2),colnames(i75_from_flow2))), directional = TRUE, annotationTrack = "grid",
preAllocateTracks = list(list(track.height = 0.05),
list(track.height = 0.05)))
circos.trackPlotRegion(track.index = 1, panel.fun = function(x, y) {
xlim = get.cell.meta.data("xlim")
ylim = get.cell.meta.data("ylim")
sector.index = get.cell.meta.data("sector.index")
circos.text(mean(xlim), mean(ylim), sector.index, facing = "inside", niceFacing = TRUE)
}, bg.border = NA)
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,在代码中的chordDiagram和circos.trackPlotRegion行之后出现以下错误。
Error …Run Code Online (Sandbox Code Playgroud)