Я получил множественные data.frames (из пакета наборов данных) загружается и я использую пакет svDialogs для некоторого простого ввода данныхR: петли, хотя несколько переменных
требуют (svDialogs)
< - ирис
б < - attitued
> a
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
and so on
> b
rating complaints privileges learning raises critical advance
1 43 51 30 39 61 92 45
2 63 64 51 54 63 73 47
3 71 70 68 69 76 86 48
4 61 63 45 47 54 84 35
5 81 78 56 66 71 83 47
and so on
Загруженные фреймы данных не всегда одинаковы и основаны на предыдущих шагах, поэтому их имена и число могут меняться.
Что я хочу сделать сейчас, это зацикливать эти кадры данных и спросить, как имена колонок должны быть переименованы, и каждый из данных кадров должен получить новую переменную new.names [FILENAME] в этом случае new.names .a и new.names.b, чтобы на более позднем этапе можно было назначить в качестве новых имен столбцов для конкретных data.frames.
Я думаю, что первое, что мне нужно, чтобы сохранить ранее загруженные dataframes в переменной
files<- c("a", "b")
и применить что-то вроде этого:
new.names <- c()
for (x in files)
for (m in names(a))
new.names <- c(new.names,dlgInput(sprintf('Enter new column name or press ok: "%s"', m), default=m, Sys.info()["n"])$res)
for(i in files)
assign(paste("new.names", i,sep=""), new.names)
Ну это работает для одного кадра данных, но не с несколькими (он просто повторяет имена столбцов одного и того же кадра данных столько раз, сколько значений в переменной «файлы»). И присваивает введенные новые имена столбцам всем новым созданным переменным (new.namesa, new.namesb). Фактически, он должен перейти к следующей переменной (new.nameb), как только он начнет повторять имена второго файла («b»).
выход, если я Don `T изменить предложенные оригинальные имена столбцов является:
> new.namesa
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" "Sepal.Length"
[7] "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
> new.namesb
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" "Sepal.Length"
[7] "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
Так есть ли возможность решить эту проблему? Я не буду увлекаться использованием циклов - я несколько раз читал, что в R. их следует избегать, если есть другое решение (в лучшем случае, но не обязательно без использования дополнительных пакетов).
Любая помощь будет оценена с тех пор, как я действительно застрял на этом этапе.
'для (м в названиях (а))' должен быть 'для (м в названиях (х)) ' – jeremycg
Я пробовал это раньше, но когда я изменяю, диалоговое окно ввода не появляется. – Deset
В этом коде есть множество ошибок - 'files <- c (" a "," b ")' должно быть 'files <- list (a, b)'. Включите для циклов в '{}'. Подумайте о том, что выглядит 'new.names', и какие' new.namesa' и 'b' будут – jeremycg