Как исправить: ошибка в strsplit(unitspec, ” “): аргумент без символа


Ошибка, с которой вы можете столкнуться в R:

 Error in strsplit(df$my_column, split = "1"): non-character argument 

Эта ошибка обычно возникает, когда вы пытаетесь использовать функцию strsplit() в R для разделения строки, когда объект, с которым вы работаете, не является строкой.

В этом руководстве объясняется, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C'),
                 dots=c(91910, 14015, 120215))

#view data frame
df

  team points
1 A 91910
2 B 14015
3 C 120215

Теперь предположим, что мы пытаемся использовать функцию strsplit() для разделения значений в столбце «точки» в зависимости от того, где появляется число 1:

 #attempt to split values in points column
strsplit(df$points, split="1")

Error in strsplit(df$points, split = "1"): non-character argument

Мы получаем ошибку, поскольку переменная «points» не является символом.

Мы можем подтвердить это, проверив класс этой переменной:

 #display class of "points" variable
class(df$points)

[1] "digital"

Мы видим, что эта переменная имеет числовой класс.

Как исправить ошибку

Чтобы исправить эту ошибку, используйте as.character() для преобразования переменной «points» в символ перед попыткой использования функции strsplit() :

 #split values in points column based on where 1 appears
strsplit(as. character (df$points), split="1")

[[1]]
[1990"

[[2]]
[1] "" "40" "5" 

[[3]]
[1] "" "202" "5"

На этот раз мы успешно разделили каждое значение в столбце «точки», поскольку сначала использовали функцию as.character() для преобразования «точек» в символ.

Дополнительные ресурсы

В следующих руководствах объясняется, как устранить другие распространенные ошибки в R:

Как исправить в R: Имена не совпадают с предыдущими именами
Как исправить в R: столбцов больше, чем имен столбцов
Как восстановить в R: замена имеет X строк, данные имеют Y

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *