Учитывая (упрощенный) фрейм данных в формате
df <- data.frame(a = c(1,2,3,4),
b = c(4,3,2,1),
temp1 = c("-","-","-","foo: 3"),
temp2 = c("-","bar: 10","-","bar: 4")
)
a b temp1 temp2
1 4 - -
2 3 - bar: 10
3 2 - -
4 1 foo: 3 bar: 4
Мне нужно переименовать все временные столбцы с именами, содержащимися в столбце, Моя конечная цель состоит в следующем:
a b foo bar
1 4 - -
2 3 - 10
3 2 - -
4 1 3 4
имена столбцов df и содержащиеся в них данные будут неизвестны, однако столбцы, которые необходимо изменить, будут содержать temp, а разделитель всегда будет иметь вид ":"
Поэтому я могу легко удалитьимя из столбцов, используя dplyr, как это:
df <- df %>%
mutate_at(vars(contains("temp")), ~(substr(., str_locate(., ":")+1,str_length(.))))
, но сначала мне нужно переименовать столбцы на основе некоторого метода функции, который сканирует столбец и возвращает значение (я) внутри него, т.е. 1012 *
rename_at(vars(contains("temp")), ~(...some function.....))
Согласно приведенному примеру, нет гарантии, что в определенных строках будут данные, поэтому я не могу просто получить значение из строки 1
Любые идеи приветствуются. Заранее спасибо