给定矩阵列表:
temp <- list(matrix(c(1,8,3,400), 2),
matrix(c(5,2,300,14),2),
matrix(c(100,200,12,4),2)
)
temp
# [[1]]
# [,1] [,2]
# [1,] 1 3
# [2,] 8 400
#
# [[2]]
# [,1] [,2]
# [1,] 5 300
# [2,] 2 14
#
# [[3]]
# [,1] [,2]
# [1,] 100 12
# [2,] 200 4
Run Code Online (Sandbox Code Playgroud)
我想要矩阵的逐元素中位数:
[,1] [,2]
[1,] 5 12
[2,] 8 14
Run Code Online (Sandbox Code Playgroud)
可以在没有显式for循环的情况下完成此操作吗?
如果我有一个用gzip压缩的大型数据文件,比方说dat.gz,什么是更高效的内存?
mydat <- fread("gunzip -c dat.gz")
Run Code Online (Sandbox Code Playgroud)
或者,首先解压缩/解压缩文件dat,然后执行
mydat <- fread("dat")
Run Code Online (Sandbox Code Playgroud)
我关心记忆而不是速度,以防止R崩溃.
我有一个看起来像这样的大数据框:
group_id distance metric
1 1.1 0.85
1 1.1 0.37
1 1.7 0.93
1 2.3 0.45
...
1 6.3 0.29
1 7.9 0.12
2 2.5 0.78
2 2.8 0.32
...
Run Code Online (Sandbox Code Playgroud)
数据框已按排序group_id,然后按排序distance。我想知道dplyr或data.table等效于执行以下操作:
每个内group_id:
distance当前内 group_idBE d1,d2,...,d_n。d在d1,d2,...,d_n:计算的一些功能f上的所有值metric,其distance值小于d。该函数f是一个自定义的用户定义函数,它接受一个向量并返回一个标量。假设函数f在空向量上定义良好。因此,在上面的示例中,所需的数据帧如下所示:
group_id distance_less_than metric
1 1.1 f(empty vector)
1 1.7 f(0.85, 0.37)
1 2.3 f(0.85, 0.37, 0.93)
... …Run Code Online (Sandbox Code Playgroud)