有没有人知道以矢量化格式完成以下任何方法?
而不是减去成员明智test1的test,我想每一个元素减去test1从每一个元素test.所以,而不是:
test = c(1:10)
test1 = seq(0.1, 1, 0.1)
test - test1
[1] 0.9 1.8 2.7 3.6 4.5 5.4 6.3 7.2 8.1 9.0
Run Code Online (Sandbox Code Playgroud)
我想要:
test2=vector("list")
for(i in 1:length(test)){
test2[[i]] = test[i] - test1
}
test2
[[1]]
[1] 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0
[[2]]
[1] 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1.0
[[3]]
[1] 2.9 2.8 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 …Run Code Online (Sandbox Code Playgroud) 我正在使用ggplot2构建一个包含四个图的图形,每个图由一个特定的建模域组成.我想用粗体字母上的字母制作下面的图.使用符号太有问题,因为我有8个类别,符号看起来太相似了.
以下是可重复的示例.
数据:
Covariate.Weights.Data= structure(list(Species = structure(c(1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, …Run Code Online (Sandbox Code Playgroud) 我正在努力矢量化以下函数的重复应用程序,我目前已将其实现为 for 循环。这个小例子表明了较大数据集的问题,矢量化将允许有益的运行时改进:
action = function(x,y,i) {
firsttask = cumsum(x[which(x<y[i])])
secondtask = mean(firsttask)
thirdtask = min(firsttask[which(firsttask>secondtask)])
fourthtask = length(firsttask)
output = list(firsttask, data.frame(average=secondtask,
min_over_mean=thirdtask,
size=fourthtask))
return(output)
}
thingofinterest = c(1:10)
limits = c(5:10)
test = vector("list", length = length(limits))
for(i in 1:length(limits)) {
test[[i]] = action(thingofinterest, limits, i)
}
test
Run Code Online (Sandbox Code Playgroud)
我想用矢量化命令替换 for 循环,而不是任何apply函数系列,因为它们并不总是能提高性能(我并不是说 for 循环有任何问题,我只需要优化此中的速度)案例。参见:R 的 apply 系列比语法糖更重要吗?)。我该怎么做?
我有以下内容data.table:
Month Day Lat Long Temperature
1: 10 01 80.0 180 -6.383330333333309
2: 10 01 77.5 180 -6.193327999999976
3: 10 01 75.0 180 -6.263328333333312
4: 10 01 72.5 180 -5.759997333333306
5: 10 01 70.0 180 -4.838330999999976
---
117020: 12 31 32.5 310 11.840003833333355
117021: 12 31 30.0 310 13.065001833333357
117022: 12 31 27.5 310 14.685003333333356
117023: 12 31 25.0 310 15.946669666666690
117024: 12 31 22.5 310 16.578336333333358
Run Code Online (Sandbox Code Playgroud)
对于每个地点(由Lat和给出Long),我在10月1日至12月31日期间每天都有温度.
有1,272个地点,每个成对组合包括Lat:
Lat
1 80.0 …Run Code Online (Sandbox Code Playgroud)