使序列数字列名称前缀为字母

scl*_*ee1 5 r

我想在我的数据集中添加标签.但是,问题是我的数据集中有这么多列,因此手动添加标签很费力.

我有33列,包括label末尾的列,如下所示.

features <- c("f1","f2","f3","f4","f5","f6","f7","f8","f9","f10",
              "f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
              "f21","f22","f23","f24","f25","f26","f27","f28","f29","f30",
              "f31","f32","label")
colnames(urc_training_norm) <- features
Run Code Online (Sandbox Code Playgroud)

如您所见,手动键入每列很烦人地添加我想要的列名称.

有没有更好的方法来生成这些名称?

Kou*_*ndy 8

你可以使用paste0命令

    > c(paste0("f", 1:32), "label")


     [1] "f1"    "f2"    "f3"    "f4"    "f5"    "f6"    "f7"    "f8"    "f9"    "f10"   "f11"   "f12"  
    [13] "f13"   "f14"   "f15"   "f16"   "f17"   "f18"   "f19"   "f20"   "f21"   "f22"   "f23"   "f24"  
    [25] "f25"   "f26"   "f27"   "f28"   "f29"   "f30"   "f31"   "f32"   "label"
Run Code Online (Sandbox Code Playgroud)

这将完成这项工作

colnames(urc_training_norm) <- c(paste0("f", 1:32), "label")
Run Code Online (Sandbox Code Playgroud)


use*_*236 7

这是我通常这样做的方式.sprintf直接打印数字.通过添加%02d或者%03d您可以添加前导零,这在处理大数字时很有用:D

features <- c(sprintf("f%02d", seq(1,32)),"label")
colnames(urc_training_norm) <- features
Run Code Online (Sandbox Code Playgroud)


zx8*_*754 5

如果您不介意使用X而不是前缀f,那么我们可以使用make.names()旨在制作语法有效名称的函数:

make.names(c(1:4, "label"))
# [1] "X1"    "X2"    "X3"    "X4"    "label"
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用make.unique()

make.unique(c(rep("f", 4), "label"), sep = "")
# [1] "f"     "f1"    "f2"    "f3"    "label"
Run Code Online (Sandbox Code Playgroud)