Como resolver o problema: tente definir "nomes de colunas"; em um objeto com menos de duas dimensões


Uma mensagem de erro que você pode encontrar ao usar R é:

 Error in `colnames<-`(`*tmp*`, value = c("var1", "var2", "var3")): 
  attempt to set 'colnames' on an object with less than two dimensions

Este erro normalmente ocorre quando você tenta usar a função colnames() para definir nomes de colunas em um objeto que não é um quadro de dados ou matriz.

O exemplo a seguir mostra como resolver esse erro na prática.

Como reproduzir o erro

Suponha que temos o seguinte quadro de dados em R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'C', 'B', 'C', 'B', 'B', 'C', 'A'),
                 points=c(12, 8, 26, 25, 38, 30, 24, 24, 15),
                 rebounds=c(10, 4, 5, 5, 4, 3, 8, 18, 22))

#view data frame
df

  team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22

Agora suponha que tentamos adicionar uma nova linha no final do quadro de dados:

 #define new row to add to end of data frame
new_row <- c('D', 15, 11)

#attempt to define column names for new row
colnames(new_row) <- colnames(df)

Error in `colnames<-`(`*tmp*`, value = c("team", "points", "rebounds")): 
  attempt to set 'colnames' on an object with less than two dimensions

Estamos recebendo um erro porque usamos a função colnames() em um vetor em vez de um dataframe ou matriz.

Como corrigir o erro

Para evitar esse erro, precisamos ter certeza de usar a função colnames() com um quadro de dados:

Por exemplo, podemos usar o código a seguir para adicionar uma nova linha no final do quadro de dados

 #define new row to add to end of data frame
new_row <- data. frame ('D', 15, 11)

#define column names for new row
colnames(new_row) <- colnames(df)

#add new row to end of data frame
df <- rbind(df, new_row)

#view updated data frame
df

   team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22
10 D 15 11

Desta vez não recebemos nenhum erro porque usamos a função colnames() para definir os nomes das colunas de um quadro de dados em vez de um vetor.

Podemos então usar rbind() com sucesso para vincular a nova linha ao final do quadro de dados existente.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns no R:

Como consertar em R: argumentos envolvem diferentes números de linhas
Como corrigir em R: erro na seleção de argumentos não utilizados
Como reparar em R: a substituição tem comprimento zero

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *