我有一个数据帧表示图表的边界列表,如下所示: | user1 | user2 | delta_t | |-------|-------|---------| | Bob | Alice | 10 | | Jake | June | -1 |
我想根据交互的时间创建一个有向图,并且使用igraph,边缘总是从user1到user2。
因此,我想通过我的数据框,并根据delta_t重新排列节点的顺序。交换同一行中的列之间的元素
这就是我现在所拥有的:
network_edge_list <- transform(network_edge_list, user1 = ifelse(delta_t > 0, user2, user1), user2 = ifelse(delta_t > 0 , user1, user2))
它工作正常,但每次交换的用户在一排的时候,它改变了用户2名成数。我猜这是因为它没有办法跟踪第一次交换后user2的字符串值,所以它会进行任意替换。 虽然在数据框中一直发生,并且一旦用户转换为数字,该数字在整个数据框中正确使用,这非常令人讨厌,并使我的下一步变得更加困难。
我也试过:
myfunction <- function(df){
if (df[3] > 0){
temp <- df[1]
df[1] <- df[2]
df[2] <- temp
}
}
df <- apply(df, 1, function(x) myfunction) `
但我没有得到我所期待的结果,实际上是找了很多更复杂的比我希望的那样。
任何人有任何想法? 谢谢
是什么类型的数据?也许他们只是因素? – Tim
对!猜测在故障排除时打开你的眼睛会帮助Oo –