#r #dataframe #for-loop
Вопрос:
Таким образом, каждый фрейм данных имеет одинаковые имена столбцов, и мне нужно использовать цикл for, чтобы изменить имена столбцов за один раз.
RD1df=read.table(RD1url,skip=33)
RD2df=read.table(RD2url,skip=33)
RD3df=read.table(RD3url,skip=33)
RD4df=read.table(RD4url,skip=33)
Sites=list(RD1df,RD2df,RD3df,RD4df)
for(colnames in Sites)
{colnames=c("Agency", "SiteId",
"DateTime", "Measure",
"DataValue")}'''
Это код, который я пытался запустить, и в цикле for нет сообщения об ошибке, но имена столбцов не меняются
Комментарии:
1. Находятся ли фреймы данных в списке или в глобальной среде?
2. @TarJae итак, у меня есть таблица as read., для создания которой я использовал paste0, потому что все они похожи на URL-адреса, а затем я поместил их в этот список, называемый Сайтами
Ответ №1:
Попробуйте это:
NewNames <- function(x) {
names(x)<- c("Agency", "SiteId", "DateTime", "Measure", "DataValue")
return(x)
}
Sites <- lapply(Sites, NewNames)
или в качестве цикла for:
for (i in seq_along(Sites)) {
names(Sites[[i]]) <- c("Agency", "SiteId", "DateTime", "Measure", "DataValue")
}
Комментарии:
1. поскольку мне нужно использовать цикл for, могу ли я заменить цикл apply на цикл for? Похоже, я, возможно, захочу сохранить верхнюю часть, чтобы запустить цикл for, тхо? и в этом цикле for я бы хотел, чтобы он выглядел так: for (x на сайтах) {…
2.
for (i in seq_along(Sites)) { names(Sites[[i]]) <- c("Agency", "SiteId", "DateTime", "Measure", "DataValue") }