我目前有一些看起来像这样的代码:
```{r, tidy=TRUE}
plot(DT$age, DT$height, xlab = "Age of participant in Trials", ylab = "Height of participant in Trials")
```
Run Code Online (Sandbox Code Playgroud)
现在,我的理解是设置tidy为TRUE使得当我将代码编织在一起时,代码不会在页面上运行并且会自行换行.但是,当我执行上面的命令时,我偶尔会在源代码显示中运行.还有另一个函数可以保证代码的包装吗?谢谢!
我目前正在尝试运行逻辑回归模型。我的数据有两个变量,一个响应变量和一个预测变量。问题是我有 2 亿个观察值。我正在尝试运行逻辑回归模型,但即使在 Amazon 上的 EC2 实例的帮助下,在 R/Stata/MATLAB 中执行此操作也非常困难。我认为问题在于逻辑回归函数是如何在语言本身中定义的。还有另一种方法可以快速运行逻辑回归吗?目前我遇到的问题是我的数据很快就填满了它正在使用的空间。我什至尝试过使用高达 30 GB 的 RAM,但无济于事。任何解决方案都将受到极大欢迎。
我目前在我的 linux EC2 服务器中有一个 15 GB 的大型数据库 .db 文件。我知道 SQLite 3 可以使用以下命令直接导出到 .csv 文件:
sqlite3 -header -csv ./home/data.db "select * from datafile;" >> out.csv
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一个选项可以将 .db 文件导出到制表符分隔的文本文件中。我上下查看了 SQLite 3 的文档,但只找到了对 .csv 文件的引用。有谁知道我如何做到这一点?非常感谢!
在将日期转换为大型数据集的字符类时,我注意到了一些非常奇怪的东西.举个例子,我创建了一个模拟数据集,如下所示:
DT = data.table(x=rep("2007-1-1", 1e9), y = rep(1,1e9))
DT[,x] <- as.Date(DT[,x])
Run Code Online (Sandbox Code Playgroud)
现在,我想将日期格式的x列转换为字符.
DT[,x.character:= as.character(x)]
Run Code Online (Sandbox Code Playgroud)
这需要花费一些时间来处理大型数据集,我注意到如果我们执行以下操作,转换所需的时间会急剧减少:
DT[,x.character:= as.character(x+y-y)]
Run Code Online (Sandbox Code Playgroud)
我在这里做的只是添加y并减去y,所以我真的得到了相同的结果.从逻辑的角度来看,似乎我正在让计算机做更多的工作.但是,为什么这种方法比直接转换方式更快地运行?
为了便于说明,我使用system.time()运行了两次10000行,并获得了以下结果:
DT = data.table(x=rep(as.Date("2007-1-1"), 1e5), y = rep(1,1e5))
system.time(DT[,x.character:= as.character(x)])
> user system elapsed
1.89 0.12 2.03
system.time(DT[,x.character:= as.character(x+y-y)])
> user system elapsed
0.635 0.008 0.643
system.time(DT[,x.character.sub:= as.character(x+y-y+y-y)])
> user system elapsed
0.347 0.004 0.351
Run Code Online (Sandbox Code Playgroud)
我们可以看到,第二种方法所需的时间更少,更有趣的是,第三种方法,使用更多的yy方法,可以节省更多的时间.有原因吗?
谢谢!
我目前正在尝试将R文件作为Rscript文件运行.我在script.sh文件中有以下代码:
#!/bin/bash
cd documents
module load r
#!/usr/bin/env Rscript
mem2 <- 4+5
packageVersion("data.table")
save.image("OUT.RData")
Run Code Online (Sandbox Code Playgroud)
但是,似乎在运行此操作后qsub script.sh,它会返回错误,说明如何识别多个命令.我做错了吗?谢谢!
我正在努力通过一些参考专栏将一个数据表的元素与另一个"主"集合在一起.为了使事情更清楚,我创建了一些示例数据:
这是我想要加入另一个"主集"的数据集.
data.frame(refID = c(1,3,4,5,7,8), value = c(3.3,3.9,4.4,8.0,1.1,2.5))
refID value
1 3.3
3 3.9
4 4.4
5 8.0
7 1.1
8 2.5
Run Code Online (Sandbox Code Playgroud)
主集:
data.frame(refID = 1:9, value = rep(0,9))
refID value
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
Run Code Online (Sandbox Code Playgroud)
我基本上希望将第一个数据集中的值列发送到第二个数据集,但是如果存在间隙,则让它们的值为0.最终,我希望得到:
结果集:
refID value
1 3.3
2 0.0
3 3.9
4 4.4
5 8.0
6 0.0
7 1.1
8 2.5
9 0.0
Run Code Online (Sandbox Code Playgroud)
我打得周围的一些东西dplyr和data.table包,但似乎无法真正找出这样做的一个很好的和直接的方式.非常感谢建议,非常感谢.
我试图找到一种方法来找到矩阵中列的最小值,取决于另一列中的值.假设我的矩阵看起来像这样:
A B
3 1.2
3 3.4
3 0.7
4 4.5
4 4.9
5 0.1
5 0.4
6 5
Run Code Online (Sandbox Code Playgroud)
我希望在A中找到共享相同数字的每列的"局部最大值".
所以,我想得到一个新的变量C,看起来像:
A B C
3 1.2 0.7
3 3.4 0.7
3 0.7 0.7
4 4.5 4.5
4 4.9 4.5
5 0.1 0.1
5 0.4 0.1
6 5 5
Run Code Online (Sandbox Code Playgroud)
可以看出,C中的值是B中条目的最小值,在A中共享相同的值.
for(i in 1:length(data)){
if (A[i]==A[i+1])
else C <- min(B[i])
}
Run Code Online (Sandbox Code Playgroud)
像这样的for循环可能会起到作用,但是计算密集且昂贵.我想知道在创建具有最小值的列时是否有更简单的方法可以做到这一点.谢谢!
注意:为了方便起见,我使用上一篇文章中的示例数据集。
假设有两个数据集,ref和map。他们是:
ref <- data.table(space=rep('nI',3),t1=c(100,300,500),t2=c(150,400,600),id=letters[1:3])
map <- data.table(space=rep('nI',241),t1=seq(0,1200,by=5),t2=seq(5,1205,by=5),res=rnorm(241))
Run Code Online (Sandbox Code Playgroud)
他们看起来像:
> ref
space t1 t2 id
1: nI 100 150 a
2: nI 300 400 b
3: nI 500 600 c
> map
space t1 t2 res
1: nI 0 5 -0.7082922
2: nI 5 10 1.8251041
3: nI 10 15 0.2076552
4: nI 15 20 0.8047347
5: nI 20 25 2.3388920
---
237: nI 1180 1185 1.0229284
238: nI 1185 1190 -0.3657815
239: nI 1190 1195 …Run Code Online (Sandbox Code Playgroud)