【发布时间】:2019-04-04 13:19:42
【问题描述】:
我的向量看起来像var a %->% var b %->% var c %->% var a。 %->% 表示弧。我想将这些向量拆分为data.frames 的形式:
from to
1 var a var b
2 var b var c
3 var c var a
我发现了两个看起来都过于复杂的版本。
版本 1:带有 for 循环。做我想要的,但相当复杂
v <- "var a %->% var b %->% var c %->% var a"
v <- trimws(unlist(strsplit(v, "%->%")))
links <- data.frame(from = character(length(v) - 1), to = character(length(v) - 1), stringsAsFactors = FALSE)
for(i in 1:length(v) - 1) {
links$from[i] <- v[i]
links$to[i] <- v[i + 1]
}
版本 2:我找到了一个使用 sapply 的解决方案,它删除了 for-loop,但我认为 <<- 有点危险:
sapply(1:(length(v) - 1), function(i) {links$from[i] <<- v[i]; links$to[i] <<- v[i + 1]})
有没有更简单的选择来实现我想要的?
【问题讨论】: