Операция разделения строки
strsplit("name1.csv", "\\.")(*)
возвращает список: '"name1' 'csv"'.
Я знаю, что могу выбрать только имя файла перед расширением, например:
strsplit("name1.csv", "\\.")[[1]][1] (**)
Но это было выбрано из возвращенного списка из (*), который имеет длину 1.
Почему это?
Это так, потому что разделение строки на 2 подстроки дает список из 1 вектора символов, который должен иметь длину 2?
длина списка равна количеству начальных элементов. Предположим, у вас есть v1 <- c("name1.csv", "name2.csv"), а затем выполняется strsplit, длина списка равна 2, а длина каждого элемента в списке равна 2, 2, из которых вы выбираете первый элемент. поэтому он имеет длину 1
Это объяснило. Спасибо! Не уверен насчет сети этикетов, но если вы можете поместить комментарий в поле ответа, я могу пометить вопрос как решенный.
Спасибо, это нормально. Я думаю, что в этом посте должны быть дубликаты





Объект, возвращаемый функцией strsplit, представляет собой список векторов символов, который можно вычислить с помощью команды класса:
> class(strsplit("name1.csv", "\\."))
[1] "list"
> class(strsplit("name1.csv", "\\.")[[1]])
[1] "character"
Доступ к элементам списка можно получить с помощью [[, а к элементам вектора символов внутри списка можно получить доступ с помощью [[]] [.
Объект, возвращаемый strsplit, представляет собой список длины 1, состоящий из вектора символов длины два, как показано ниже:
> length(strsplit("name1.csv", "\\."))
[1] 1
> length(strsplit("name1.csv", "\\.")[[1]])
[1] 2
вы извлекаете первый элемент списка с помощью
[[и первый элемент внутри этого списка с помощью[