Продолжая вашу попытку, мы можем сделать
roles <- data.frame(character(),character(),character(),character(),
stringsAsFactors = FALSE)
roles[1, ] <- ifelse(names(roles) == a,sd, "-")
roles
# VP Principal AP Manager
#1 - - - 12/12/12
Или другой вариант
vec <- c("VP","Principal","AP","Manager")
setNames(data.frame(t(ifelse(vec == a, sd, "-"))), vec)
EDIT
Для обновленного примера это работает
a <- "Manager"
sd <- "12/12/12"
roles <- data.frame(character(),character(),character(),character(),
stringsAsFactors = FALSE)
names(roles) <- c("VP","Principal","AP","Manager")
roles[1, ] <- ifelse(names(roles) == a,sd, "-")
newrow = data.table(`Manager_start` = roles[1,4],
`VP_start` = roles[1,3],
`AP_start` = roles[1,2],
`P_start` = roles[1,1])
newrow
# Manager_start VP_start AP_start P_start
#1: 12/12/12 - - -