Присвойте имена элементам списка без кавычек - PullRequest
0 голосов
/ 27 сентября 2018

Мне интересно присваивать имена элементам списка.Для этого я выполняю следующий код:

file_names <- gsub("\\..*", "", doc_csv_names)
print(file_names)
"201409" "201412" "201504" "201507" "201510" "201511" "201604" "201707"
names(docs_data) <- file_names

В этом случае имя элемента списка появляется с ``.

docs_data<span class="math-container">$`201409`
However, in this case the name of the list element appears in the following way:
names(docs_data) <-  paste("name", 1:8, sep = "")
docs_data$</span>name1
  • Как преобразовать результат gsub(), чтобы получить последний шаблон именования без кавычек?
  • gsub() и paste (), кажется, производят один и тот же объект class ().В чем разница?

1 Ответ

0 голосов
/ 27 сентября 2018

И gsub, и paste возвращают символьные объекты.Они отличаются, потому что это совершенно разные функции, которые вы, кажется, знаете по их использованию (gsub заменяет экземпляры вашего шаблона желаемым выводом в строке символов, а вставляет просто ... вставляет).

Что касается того, почему вы получаете цитаты, это не имеет ничего общего с gsub и не связано с тем фактом, что вы называете переменные / столбцы числами.В самом деле, попробуйте

names(docs_data) <- paste(1:8)

, и вы поймете, что у вас возникла та же проблема при вызове шаблона именования.Это в основном связано с тем, что R не хочет путать то, является ли число действительно числом или переменной, потому что это будет хаос (как 1 может относиться к переменной, а также к числу 1?), Поэтомув таких случаях он меняет число 1 на символ «1», которому могут быть присвоены имена.Например, обратите внимание, что

> 1 <- 3
Error in 1 <- 3 : invalid (do_set) left-hand side to assignment
> "1" <- 3 #no problem!

Так что R в основном исправляет это для вас!Это не проблема, когда вы называете что-то, используя символы.Наконец, простое исправление: просто добавьте символ перед номерами вашего шаблона именования, и вы сможете вызывать их без кавычек.Например:

file_names <- paste("file_",gsub("\\..*", "", doc_csv_names),sep="")

Нужно сделать трюк (или просто изменить «file_» на что угодно, если только он не пустой, потому что тогда у вас просто остались номера и та же проблема)!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...