按列展开矩阵

杰西

我无法将数据集扩展到每个变量的所有组合中。我们有一个数据集,该数据集包含许多Npoints列,每个列iterate本身都包含多个X,Y点。数据在Npoints3和iterate4时看起来像这样

X1    Y1    X2    Y2    X3   Y3
20    1     30    1.5   50   0.9
21    1.1   33    1.3   45   1
19    0.9   28    1.6   53   1
25    1.2   31    1.4   55   1.2 

我想按列扩展此数据文件,以便将函数应用于主要三列中的数据点的每个组合

foo <= function(x1, y1, x2, y2) {
                y2 - x2*(y2 - y1)/(x2 - x1)
}

生成的文件应如下所示

x1    y1    x2    y2
20    1     30    1.5   
21    1.1   33    1.3   
19    0.9   28    1.6   
25    1.2   31    1.4   
20    1     50    0.9
21    1.1   45    1
19    0.9   53    1
25    1.2   55    1.2
30    1.5   50    0.9
33    1.3   45    1
28    1.6   53    1
31    1.4   55    1.2

似乎没有变种expand.grid可以完成此操作,我可能必须根据Npoints创建一个函数iterate,以便根据点数和迭代的数量来放大或缩小该函数,但是这对于函数来说有点复杂在这个阶段,似乎有很多效率低下的方法来完成此任务。

首先十分感谢。

实验性
#split the df into Npoints data frames
Npoints <- 3
l <- lapply(1:Npoints, function(i)df[,(2*i-1):(2*i)])
#cbind the data frames for each possible combination of Npoints
l1 <- apply(combn(Npoints, 2), 2, function(x)cbind(l[[x[1]]], l[[x[2]]]))
#rbind all
data.table::rbindlist(l1)
#    X1  Y1 X2  Y2
# 1: 20 1.0 30 1.5
# 2: 21 1.1 33 1.3
# 3: 19 0.9 28 1.6
# 4: 25 1.2 31 1.4
# 5: 20 1.0 50 0.9
# 6: 21 1.1 45 1.0
# 7: 19 0.9 53 1.0
# 8: 25 1.2 55 1.2
# 9: 30 1.5 50 0.9
#10: 33 1.3 45 1.0
#11: 28 1.6 53 1.0
#12: 31 1.4 55 1.2

数据

structure(list(X1 = c(20L, 21L, 19L, 25L), Y1 = c(1, 1.1, 0.9, 
1.2), X2 = c(30L, 33L, 28L, 31L), Y2 = c(1.5, 1.3, 1.6, 1.4), 
    X3 = c(50L, 45L, 53L, 55L), Y3 = c(0.9, 1, 1, 1.2)), .Names = c("X1", 
"Y1", "X2", "Y2", "X3", "Y3"), class = "data.frame", row.names = c(NA, 
-4L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按两列展开

来自分类Dev

按列对矩阵排序

来自分类Dev

展开numpy矩阵

来自分类Dev

在Matlab中展开矩阵?

来自分类Dev

在Matlab中展开矩阵?

来自分类Dev

展开的小部件在列和行内无法按预期工作

来自分类Dev

按数字列排序字符矩阵

来自分类Dev

重塑相关矩阵以按列对堆叠

来自分类Dev

按列而不是行存储矩阵

来自分类Dev

在Octave中按列对矩阵排序

来自分类Dev

按列匹配两个矩阵

来自分类Dev

按所有列汇总字符矩阵

来自分类Dev

使用CUDA对矩阵进行按行/按列操作

来自分类Dev

按行而不按列比较数组/矩阵

来自分类Dev

自动展开Matlab矩阵的左侧

来自分类Dev

R矩阵按多列排序(超过100列)

来自分类Dev

按条件对R矩阵的行和列进行排序

来自分类Dev

矩阵中按组(行名)汇总的列

来自分类Dev

按第一列排序矩阵列表

来自分类Dev

按组的R中的行和列矩阵总和

来自分类Dev

在矩阵中按列查找与参考最接近的值

来自分类Dev

python numpy矩阵按行操作:每行中的列

来自分类Dev

按矩阵的列对列表中的值进行排序

来自分类Dev

numpy按循环逐列对矩阵进行排序

来自分类Dev

高维矩阵中按列的公用元素

来自分类Dev

使用 R 按列“模式”对矩阵进行排序

来自分类Dev

按行填充矩阵或转置由列填充的矩阵更快吗?

来自分类Dev

从 DataFrame 列展开 JSON

来自分类Dev

按名称组合矩阵