Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Попробуйте это регулярное выражение:
poly\(([^,]*)[^)]*\)
Замените совпадение содержимым группы 1
Объяснение:
poly\(
- соответствует poly(
([^,]*)
- соответствует 0+ появлений любого символа, который не является ,
. Это фиксируется в группе 1 [^)]*\)
- соответствует 0+ вхождений любого символа, который не является )
, за которым следует )
Теперь замените все совпадение на Содержание группы 1
gsub("poly\\((.+),\\s*\\d+\\)", "\\1", inp)
# [1] "mined + cover + spp"
Или более подходящим пошаговым способом (поскольку вы боретесь с более сложным регулярным выражением):
library(magrittr)
gsub("[^a-zA-Z]", " ", inp) %>% # Drop everything that is not a letter, add space instead
gsub("poly", "", .) %>% # Drop the word poly
gsub("\\s+", " + ", .) # Add '+' back in. '\\s+' stands for one or more spaces
# [1] "mined + cover + spp"