r - R 中 data.frame 内的矩阵或其他嵌套结构

标签 r multidimensional-array dataframe distance knn

我需要在 R 中构建一个数据结构,其中包含每个观察的矩阵(或data.frame)。理想情况下,它是 data.frame 内的一个矩阵。目前为止,我只能想到嵌套列表,来实现它,但这样恐怕性能会很差。

示例

例如,对于 data.frame 元素

df <- data.frame(start=c("A", "B", "C"), end=c("A", "B", "C"))

我想在每个单元格中添加一个包含矩阵的列(由距离函数产生)。例如,对于元素 start==“A”,end==“B”,它可以是矩阵(或 data.frame)

haversineStart haversineEnd tripLengthDiff startCountry endCountry truckDiff
160.5408     308.1947        198.745            1          1         1
152.4168     308.1947         20.710            1          1         1
273.7599    2228.3508       2903.212            0          1         1

理论上,它只是某种 3D 数据结构。在 Python 中,它将是包含 NumPy 数组的列表的列表。 R 中可能有类似的事情吗?

背景

我想使用自定义距离函数执行 knn,并且需要在执行 knn 之前对距离进行归一化

最佳答案

如果您已经有嵌套列表:

d <- list(
    a = list(matrix(rnorm(4), 2, 2), matrix(rnorm(4), 2, 2), matrix(rnorm(4), 2, 2)),
    b = list(matrix(rnorm(4), 2, 2), matrix(rnorm(4), 2, 2), matrix(rnorm(4), 2, 2))
)

您可以轻松地将其转换为 data.frame,因为 data.frame 仍然是列表:

class(d) <- 'data.frame'
colnames(d) <- c('A', 'B')
rownames(d) <- c('A', 'B', 'C')

d['A', 'B']

# [[1]]
#            [,1]       [,2]
# [1,] -0.6326935 -1.1181986
# [2,] -1.3066515  0.6672159

关于r - R 中 data.frame 内的矩阵或其他嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39943841/

相关文章:

r - 使用 dplyr 或其他解决方案从另一个 data.frame 更新 data.frame 的几行和几列

r - 在r/formattable中,如何调整列格式不包括 `total`行

javascript - JSON obj 到 javascript 中的动态多维数组

python - Python Numpy 数组中的 double 元素

c - C如何确定数组的边界?

python - 将时间序列转入面板...python

python - 如何找到数据框中列的最小值的第一行

r - foreach dopar 循环内的绘图

r - 如何根据每个ID汇总R中的表

python - 将字典合并到数据框 get_dummies