Я сгенерировал ваши данные следующим образом:
df<-data.frame("Jan" = rep(x = 0,times = 3),"Feb" = rep(x = 0,times = 3),"Mar" = rep(x = 0,times = 3))
rownames(df)<-c("Jan","Feb","Mar")
Это дает следующий фрейм данных:
Jan Feb Mar
Jan 0 0 0
Feb 0 0 0
Mar 0 0 0
Следующая явная функция должна вам помочь:
set_func<-function(dt,col,row){
nm_col<-colnames(dt)
nm_row<-rownames(dt)
if(col %in% nm_col){
col_id<-which(nm_col == col)
}
else {
cat(col,"is not present as a column name in the input data\n")
}
if(row %in% nm_row){
row_id<-which(nm_row == row)
}
else {
cat(row,"is not present as a row name in the input data\n")
}
if(exists("col_id") == T & exists("row_id") == T){
dt[row_id,col_id]<-1
}
return(dt)
}
Аргументы функции:
dt
- Ваш фрейм входных данных
col
- значение, которое вы проверяете среди имен столбцов
row
- значение, которое вы проверяете среди имен строк
Использование этой функции для вашего примера дает следующий результат:
> set_func(dt = df,col = "Jan",row = "Feb")
Jan Feb Mar
Jan 0 0 0
Feb 1 0 0
Mar 0 0 0
Однако, если вы проверите значение, которое не существует в качестве имени столбца или строки, будет напечатано сообщение, информирующее вас о том, что значение не существует.
> set_func(dt = df,col = "Apr",row = "Mar")
Apr is not present as a column in the input data
Jan Feb Mar
Jan 0 0 0
Feb 0 0 0
Mar 0 0 0