names(mydat)[c(name)]<-c("newname")
Dari ini, saya tahu bahwa kolom / nama variabel "nama" dari bingkai data mydat diganti dengan "nama baru".
Pertanyaan saya adalah apakah, saya ingin melakukan ini secara berulang sehingga saya akan memiliki beberapa hal seperti:
newname1 newname2 newname3 newname4 dan seterusnya, bagaimana saya melakukannya?
Inilah yang berhasil dan tidak berhasil:
for(i in 1:4){
names(mydat)[c(name)]<-c("newname"i)
}
Apakah ada cara untuk kode ini? terima kasih banyak untuk semua yang bisa membantu. Owusu Isaac
ugly_vars <- names(dplyr::select(df, starts_with("abcde_")))
names(ESM_df[ugly_vars]) <- str_c("abc_", 1:length(ugly_vars))
Jawaban:
Solusi paling jelas adalah mengubah kode Anda untuk loop dengan yang berikut ini:
Tetapi Anda perlu mengklarifikasi apa variabel Anda
name
. Saat ini, loop ini akan melakukan 4 penggantian nama dari kolom tunggal.Secara umum jika nama yang ingin Anda ubah adalah dalam vektor, ini adalah prosedur berlangganan standar:
sumber
Coba gunakan
sprintf
ataupaste
, seperti ini:Juga, perhatikan bahwa
names(mydat)[c(name)]
ini adalah omong kosong;c(name)
setara dengan menulis adilname
dan berarti "mendapatkan nilai dari variabel yang disebutname
'; braket akan setidaknya mengekstraksi elemennames(mydat)
tetapi hanya jikaname
variabel memiliki indeks numerik atau boolean.Jika Anda ingin mengganti kolom yang disebut
name
denganname1, name2, ..., nameN
, gunakan sesuatu seperti ini:EDIT: Ya, jika Anda hanya ingin menghapus nama kolom yang digandakan, ada cara yang lebih mudah; R memiliki
make.names
fungsi yang memperbaiki masalah ini; dapat digunakan seperti ini:Bahkan lebih pendek, hal yang sama hanya dapat diperoleh dengan menulis:
sumber
grepl
akan baik-baik saja untuk melakukan pekerjaan yang lebih umum.Saya memiliki masalah yang sama dan saya menyelesaikannya dengan kode ini:
sumber