在现有文本R的每一行之间添加一行文本

时间:2013-11-11 20:54:33

标签: r text edit

所以我有一个包含序列号的单列数据框。例如:

15161718191a
17272892020c
37464748494f
16263738393g
17738393303a
83849404040d

我想在每个串行代码之间添加一个“计数器行”标识符,所以它看起来像这样:

Code1
15161718191a
Code2
17272892020c
Code3
37464748494f
Code4
16263738393g
Code5
17738393303a
Code6
83849404040d

正如您所看到的,“代码”一词保持不变,但其后面的数字是迭代的(Code1,Code2等)。有没有办法以自动方式为包含数千个串行代码的数据集执行此操作?

谢谢!

3 个答案:

答案 0 :(得分:1)

这是一种有点令人费解的方式:

# Create some data
df<-data.frame(col=sample(LETTERS,100,replace=TRUE))
# Convert to a matrix, then convert to a vector.
df2<-data.frame(col=c(t(data.frame(paste0('Code',seq_along(df$col)),df$col))))
#     col
# 1 Code1
# 2     P
# 3 Code2
# 4     H
# 5 Code3
# 6     P

答案 1 :(得分:0)

另一种方式,只是为了好玩:

d <- read.table(text='15161718191a
17272892020c
37464748494f
16263738393g
17738393303a
83849404040d', stringsAsFactors=FALSE)
data.frame(mycol=as.vector(rbind(paste0('Code', 1:nrow(d)), d[,1])))
#           mycol
# 1         Code1
# 2  15161718191a
# 3         Code2
# 4  17272892020c
# 5         Code3
# 6  37464748494f
# 7         Code4
# 8  16263738393g
# 9         Code5
# 10 17738393303a
# 11        Code6
# 12 83849404040d

答案 2 :(得分:0)

我能想到的最直接的方式。创建一个新的数据框。

df = data.frame( col=c("15161718191a",
                 "17272892020c",
                 "37464748494f",
                 "16263738393g",
                 "17738393303a",
                 "83849404040d"),
                 stringsAsFactors=FALSE)

n = nrow(df)
df2 = data.frame(col=rep(NA,2*n))
df2[1:n*2-1,] = df
df2[1:n*2,] = paste0( "Code", 1:n )