小编wms*_*ith的帖子

将数据框展开为行对的组合

我有一个数据框,其中包含一个标识符/键列,后面跟着几行值列.我想通过将键列中的唯一条目对作为新行来扩展数据列,并使用对相应行的条目的二进制运算来转换值列.

例如

> Test_data
         SYS dE_water_free dE_water_periodic dE_membrane_periodic    RTlogKi
1 4NTJ_D294N       -56.542           -56.642                   NA -0.9629731
2  4NTJ_wild      -171.031          -162.030                   NA -0.8877264
3 4PXZ_D294N       -53.430           -50.810                   NA -1.1301124
4  4PXZ_wild       -59.990           -57.320                   NA -1.2318835
5 4PY0_D294N       -77.040           -72.880                   NA -1.1351579
6  4PY0_wild       -79.080           -74.950                   NA -1.2297302
Run Code Online (Sandbox Code Playgroud)

某些列可能包含也可能不包含缺失值.

我想要的是获取每对SYS条目,例如SYS1 SYS2并在相应的值行上计算二进制运算Eg SYS1 SYS2 dE_water_free(SYS == SYS1)-dE_water_free(SYS == SYS2)... etc

        SYS1       SYS2   dE_water_free   dE_water_periodic   ...etc.
1 4NTJ_D294N  4NTJ_wild         114.489             105.610
2 4NTJ_D294N 4PXZ_D294N          -3.112               5.832
... etc.
Run Code Online (Sandbox Code Playgroud)

我可以使用该函数combn()从SYSTEM列获取一对数组,以形成SYS1和SYS2中的条目,但我不知道如何使用它来构建新的数据框...

我知道一个选项是使用像mapply这样的东西,然后手动单独构建每个列,然后将它们全部粘贴到一个新的数据框中,但这似乎是笨重而且很慢,应该有一个更自动的功能来执行此操作,像重塑,合并或重铸...但我似乎无法弄清楚如何使其工作.

r dataframe

17
推荐指数
4
解决办法
2995
查看次数

在 R 中不循环地对连续的列表元素对应用函数

我试图找到一种有效的(即避免使用循环)方法来应用一个函数,该函数迭代地将列表的当前和前一个(或下一个)元素作为参数,并返回结果列表(其长度必然是短 1 个元素)。作为一个具体的例子,

我有一个在某些图中定义路径的顶点列表

vlist <- c(1,2,7,12,17)
Run Code Online (Sandbox Code Playgroud)

来自使用 igraph 函数“lattice”构建的点阵图

G <- graph.lattice(c(5,7))
Run Code Online (Sandbox Code Playgroud)

我想在 vlist 上应用函数“get.edge.ids”,以便返回的列表产生连接 vlist 中连续元素的边的 id。例如,我想要边 1-->2、2-->7、7-->12、12-->17 的 id

使用 for 循环这很简单,

    findEids <- function(G,vlist) {
        outlist=c()
        for (i in 1:(length(vlist)-1) {
            outlist=append(outlist,get.edge.ids(G,c(vlist[i],vlist[i+1])))
        }
        return(outlist)
    }
Run Code Online (Sandbox Code Playgroud)

但我想使用像 apply() 或 reduce() 这样的矢量化方法来看看是否可以让它更快地工作,因为我需要从脚本中重复调用这样的函数(例如,计算总拉伸)对于 G 的生成树)。

r vectorization igraph

5
推荐指数
1
解决办法
2433
查看次数

标签 统计

r ×2

dataframe ×1

igraph ×1

vectorization ×1