我正在尝试找到一个可以替换以下代码的向量化过程(这需要很长时间才能运行):
for (i in 2:nrow(z)) {
if (z$customerID[i]==z$customerID[i-1])
{z$timeDelta[i]<-(z$time[i]-z$time[i-1])} else {z$timeDelta[i]<- NA}
}
Run Code Online (Sandbox Code Playgroud)
我试着寻找不同的应用片段,但没有发现任何有用的东西.
这是一些示例数据:
customerID time
1 2013-04-17 15:30:00 IDT
1 2013-05-19 11:32:00 IDT
1 2013-05-20 10:14:00 IDT
2 2013-03-14 18:41:00 IST
2 2013-04-24 09:52:00 IDT
2 2013-04-24 17:08:00 IDT
Run Code Online (Sandbox Code Playgroud)
我想获得以下输出:
customerID time timeDelta*
1 2013-04-17 15:30:00 IDT NA
1 2013-05-19 11:32:00 IDT 31.83
1 2013-05-20 10:14:00 IDT 0.94
2 2013-03-14 18:41:00 IST NA
2 2013-04-24 09:52:00 IDT 40.59
2 2013-04-24 17:08:00 IDT 0.3
*I …Run Code Online (Sandbox Code Playgroud) 我有一个2.5M x 13矩阵,我试图通过ID变量聚合.起初我尝试使用ddply,但我的记忆爆炸了.之后我尝试使用data.table,它运行得更快:
data <- as.data.table(data)
key(data) <- "ID"
agg<-mydata[,mutate(.SD,
start = min(Date))
, by = ID]
Run Code Online (Sandbox Code Playgroud)
现在没有内存问题,到目前为止,在具有4.0GB内存的英特尔i5 2.50GHz上运行它需要超过4个小时.操作系统是windows 7,所以没有并行计算.
我究竟做错了什么?
我有以下两个清单:
First list:
[[1]]
[1] "ab" "iew" "rer" "fdd"
[[2]]
[1] "ff" "de
[[3]]
[1] "cc"
Second list:
[[1]]
[1] "iew" "vfr"
[[2]]
[1] "ff" "cdc"
[[3]]
[1] "vf" "cde"
Run Code Online (Sandbox Code Playgroud)
我的目标是比较这两个多维列表,结果将是:
[[1]]
[1] FALSE TRUE FALSE FALSE
[[2]]
[1] TRUE FALSE
[[3]]
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
预先形成此intersect()函数的最佳矢量化方法是什么?
我有以下清单.
l=list("home car train", "remote TV helicopter", "grenade hello")
Run Code Online (Sandbox Code Playgroud)
我的目标是按字母顺序设置列表中每个项目的单词.意思是,在这种情况下请求的结果将是:
"car home train", "helicopter TV remote", "hello grenade"
Run Code Online (Sandbox Code Playgroud)
起初我使用strsplit分隔每个字符串中的单词:
l2<-lapply(l,function(x){as.character(sort(unlist(strsplit(as.character(x), "\\ "))))})
Run Code Online (Sandbox Code Playgroud)
在此步骤之后,我不确定如何将每个项目的不同排序值连接到请求的列表格式.(到目前为止,粘贴功能没有运气)