我需要在 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/