所以我有以下字符向量
xx = c("AAA", "ABC", "CBS")
xx
length(nchar(xx))
我试图将其拆分出来,以便我将矢量中的每个字符串都作为两对。在上面的例子中,它看起来像一个数据框,其中:
AAA ABC
ABC CBS
我一直试图避免循环,因为我的数据会很大。
split(xx, 2)
split(xx, cut(seq_along(xx), 2, labels = FALSE))
split(xx, cut(seq_along(xx), 2, labels = FALSE))[[1]]
split(xx, cut(seq_along(xx[-1]), 2, labels = FALSE))[[1]]
关于避免for循环的解决方案的任何建议。
有五个条目:
xx = c("AAA", "ABC", "CBS", "BBB", "GGG")
xx
AAA ABC
ABC CBS
CBS BBB
BBB GGG
答案 0 :(得分:1)
使用dplyr
和tidyr
xx = c("AAA", "ABC", "CBS", "BBB", "GGG")
library(dplyr)
df <- data.frame(col1 = xx) %>%
mutate(col2 = lead(col1)) %>%
tidyr::drop_na()
输出
# col1 col2
# 1 AAA ABC
# 2 ABC CBS
# 3 CBS BBB
# 4 BBB GGG
答案 1 :(得分:1)
我们可以使用data.table
library(data.table)
na.omit(as.data.table(xx)[, xx1 := shift(xx, type = "lead")])
# xx xx1
#1: AAA ABC
#2: ABC CBS
#3: CBS BBB
#4: BBB GGG