如何创建一个从R中
问题描述:
矢量EdgeList都我有一个像向量:如何创建一个从R中
c("A", "B", "C", "D", "E", "F")
,我想创建一个像
"from" "to"
A B
B C
C D
D E
E F
一个数据帧我怎么能做到呢?
答
另一种方式:
data.frame(from = vec[-length(vec)], to = vec[-1])
答
下面是使用一种方法embed
并重新排列列:
# data
temp <- c("A", "B", "C", "D", "E", "F")
embed(temp, 2)[, c(2,1)]
[,1] [,2]
[1,] "A" "B"
[2,] "B" "C"
[3,] "C" "D"
[4,] "D" "E"
[5,] "E" "F"
把这个变成一个data.frame,敷在data.frame:
setNames(data.frame(embed(temp, 2)[, c(2,1)]), c("from", "to"))
from to
1 A B
2 B C
3 C D
4 D E
5 E F
答
na.omit(data.frame(from = vec, to = dplyr::lead(vec)))
from to
1 A B
2 B C
3 C D
4 D E
5 E F
答
我们也可以这样做:
vec <- c("A", "B", "C", "D", "E", "F")
x <- rep(seq(length(vec)), each=2)[-length(vec)*2][-1]
# [1] 1 2 2 3 3 4 4 5 5 6
data.frame(matrix(vec[x], ncol = 2, byrow = T))
或者:
data.frame(t(sapply(seq(length(vec)-1), function(i) c(vec[i], vec[i+1]))))
# X1 X2
# 1 A B
# 2 B C
# 3 C D
# 4 D E
# 5 E F
答
另一种方法是使用zoo
包,
library(zoo)
rollapply(vec, 2, by = 1, paste)
这就是为什么我喜欢这个网站。从来不知道“嵌入”。 – JasonAizkalns