Я пытаюсь получить последний символ или номер серии символов во фрейме данных, чтобы можно было отфильтровать некоторые категории после. Но я не получаю ожидаемого результата.
names = as.character(c("ABC Co","DEF Co","XYZ Co"))
code = as.character(c("ABCN1","DEFMO2","XYZIOIP4")) #variable length
my_df = as.data.frame(cbind(names,code))
Первый подход:
my_df[,3] = substr(my_df[,2],length(my_df[,2]),length(my_df[,2]))
То, что я ожидал получить, было: c("1","2","4")
Чем я являюсь на самом деле получается: c("C","F","Z")
Затем я понял, что length(my_df[,2])
- это количество строк моего фрейма данных, а не длина каждой ячейки. Итак, я решил создать это l oop:
for (i in length(nrow(my_df))){
my_df[i,3] = substr(my_df[i,2],length(my_df[i,2]),length(my_df[i,2]))
}
То, что я ожидал получить, было: c("1","2","4")
Что я действительно получаю, это: c("A","F","Z")
Итак, я попытался:
for (i in length(nrow(my_df))){
my_df[i,3] = substr(my_df[i,2],-1,-1)
}
То, что я ожидал получить, было: c("1","2","4")
Что я действительно получаю, это: c("","F","Z")
Не мне повезло, есть мысли о том, что мне не хватает? Большое спасибо!