Просто обращаюсь к редактированию.
@ nzcoops, вам не нужно имена столбцов в символьном векторе, разделенном запятыми. Вы думаете об этом неправильно. Когда вы делаете
vec <- c("col1", "col2", "col3")
вы создаете вектор символов. ,
просто разделяет аргументы, принимаемые функцией c()
, когда вы определяете этот вектор. names()
и аналогичные функции возвращают символьный вектор имен.
> dat <- data.frame(col1 = 1:3, col2 = 1:3, col3 = 1:3)
> dat
col1 col2 col3
1 1 1 1
2 2 2 2
3 3 3 3
> names(dat)
[1] "col1" "col2" "col3"
Гораздо проще и менее подвержено ошибкам выбирать из элементов names(dat)
, чем обрабатывать его вывод в разделенную запятыми строку, из которой вы можете вырезать и вставить.
Скажем, нам нужны столбцы col1
и col2
, подмножество names(dat)
, сохраняя только те, которые мы хотим:
> names(dat)[c(1,3)]
[1] "col1" "col3"
> dat[, names(dat)[c(1,3)]]
col1 col3
1 1 1
2 2 2
3 3 3
Вы можете делать то, что хотите, но R всегда печатает вектор на экране в кавычках "
:
> paste('"', names(dat), '"', sep = "", collapse = ", ")
[1] "\"col1\", \"col2\", \"col3\""
> paste("'", names(dat), "'", sep = "", collapse = ", ")
[1] "'col1', 'col2', 'col3'"
так что последний может быть более полезным. Тем не менее, теперь вы должны вырезать и пройти из этой строки. Гораздо лучше работать с объектами, которые возвращают то, что вы хотите, и использовать стандартные подпрограммы для сохранения того, что вам нужно.