Jak naprawić: błąd w fun(newx[, i], …): typ argumentu „(znak)
Błąd, który możesz napotkać w R to:
Error in sum(x): invalid 'type' (character) of argument
Ten błąd występuje, gdy próbujesz wykonać operację matematyczną (np. pobranie sumy, średniej, liczby itp.) na wektorze znakowym.
W tym samouczku wyjaśniono, jak w praktyce rozwiązać ten błąd.
Jak odtworzyć błąd
Załóżmy, że tworzymy następującą ramkę danych w R:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
points=c(10, 12, 15, 20, 26, 25),
rebounds=c(7, 8, 8, 14, 10, 12))
#view data frame
df
team points rebounds
1 to 10 7
2 to 12 8
3 to 15 8
4 B 20 14
5 B 26 10
6 B 25 12
Załóżmy teraz, że próbujemy obliczyć sumę kolumny „zespół”:
#attempt to calculate sum of values in 'team' column
sum(df$team)
Error in sum(df$team): invalid 'type' (character) of argument
Otrzymujemy błąd, ponieważ kolumna „zespół” jest kolumną znakową.
Możemy to potwierdzić za pomocą funkcji class() :
#view class of 'team' column
class(df$team)
[1] “character”
Jak naprawić błąd
Sposobem na obejście tego błędu jest stosowanie wyłącznie operacji matematycznych na wektorach numerycznych.
Na przykład moglibyśmy użyć funkcji sum() do obliczenia sumy wartości w kolumnie „punkty”:
#calculate sum of values in 'points' column
sum(df$points)
[1] 108
Możemy również obliczyć sumę wartości punktowych pogrupowanych według drużyn:
#calculate sum of points, grouped by team
aggregate(points ~ team, df, sum)
team points
1 to 37
2 B 71
Moglibyśmy nawet obliczyć sumę wartości punktów i zbiórek pogrupowanych według drużyn:
#calculate sum of points and sum of rebounds, grouped by team
aggregate(.~team, df, sum)
team points rebounds
1 A 37 23
2 B 71 36
Należy pamiętać, że przy żadnej z tych operacji nie pojawia się błąd, ponieważ próbujemy jedynie obliczyć sumę zmiennych numerycznych.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:
Jak naprawić: warunek ma długość > 1 i zostanie użyty tylko pierwszy element
Jak naprawić: nienumeryczny argument operatora binarnego
Jak naprawić: dim(X) musi mieć dodatnią długość
Jak naprawić: błąd podczas wybierania nieużywanych argumentów