替换 R 中列名子集中的子字符串

Sto*_*aft 1 r subset dataframe

我有一个数据框,我想用通过在旧名称前面添加标识符而创建的新名称替换列的子集。例如,要在第 3:7 列前面加上字符串“TEST”,我尝试了以下操作。

我在这里缺少什么?

# Make a test df
df <- data.frame(replicate(10,sample(0:1,100,rep=TRUE)))

#Subsetting works fine
colnames(df[,3:7]) 

#sub works fine
sub("^", "TEST.", colnames(df[,3:7]))

#replacing the subset of column names with sub does not
colnames(df[,3:7]) <-  sub("^", "TEST.", colnames(df[,3:7]))
colnames(df)

#Also doesn't work
colnames(df[,3:7]) <-  paste("TEST.", colnames(df[,3:7]), sep ="")
colnames(df)
Run Code Online (Sandbox Code Playgroud)

nei*_*fws 5

列名应该是一个向量,索引位于括号之外:

colnames(df)[3:7] <-  sub("^", "TEST.", colnames(df)[3:7])
Run Code Online (Sandbox Code Playgroud)

您还可以:

colnames(df)[3:7] <-  paste0("TEST.", colnames(df)[3:7])
Run Code Online (Sandbox Code Playgroud)