Из вашего вопроса не ясно, с каким объектом вы имеете дело, но похоже:
- у вас было что-то вроде csv без заголовков
- вы читаетеэто в R как data.frame, называемый
Capital_Structure
, но сделал так, как если бы первая строка данных имела заголовки - , теперь у вас есть data.frame, где 33,94 используется в качестве одного из имен столбцов.
Если это так, вы можете получить доступ к этим именам, используя names(Capital_Structure)
, чтобы получить все имена, и names(Capital_Structure)[2]
, чтобы получить только второе имя, то есть 33.94
btw - Rиспользует базу 1, а не базу 0 - поэтому второй элемент равен [2] и head(foo, 0)
ничего не возвращает
РЕДАКТИРОВАТЬ :
Теперь, когда вы 'предоставив отрывок данных, я вижу, что Capital_Structure
- это data.frame с 6 строками и 1 столбцом:
class(Capital_Structure) # what is it? a data.frame
dim(Capital_Structure) # how big? 6x1
Если вы хотите указать «число после последнего пробела», вы можетеиспользуйте жадное регулярное выражение, чтобы удалить все до последнего пробела:
gsub('^.* ', '', names(Capital_Structure))
[1] "33.94"
Это будет работать и для других примеров, которые вы добавили в комментарии:
> gsub('^.* ', '', "P/E Ratio (TTM) 13.28")
[1] "13.28"
Если у вас есть список data.frames, и вы хотите получить все имена, затем примените эту функцию извлечения, вы можете использовать lapply
и анонимную функцию:
# example list; using data.table, bc base data.frame doesn't like spaces in names
library(data.table)
my_list <- list(data.table(`Total Debt to Total Equity 33.94`=1),
data.table(`P/E Ratio (TTM) 13.28`=1))
# extract "thing after last space" from all names
lapply(my_list, function(x) gsub('^.* ', '', names(x)))
возвращает:
[[1]]
[1] "33.94"
[[2]]
[1] "13.28"