5 votos

El objeto de tipo 'closure' no es una tabla de subconjuntos

Estoy usando R (x64 versión 3.2.2) en Windows 10 y obtener el siguiente mensaje de error cuando (ver abajo) tratando de subconjunto de un marco de datos muy simple que tiene muchos NAs.

dt <- read.table("Datos.csv", header=T, sep=",")
k1 <- which(apply(is.na(dt),2,sum) < 10)  #Keep variables with <10 NA's
k2 <- which(apply(is.na(dt[,k1]),1,sum)==0)  #Keep observations with no NA's
dt <- dt[k2,k1] 

Error in dt[k2, k1] : object of type 'closure' is not subsettable

¿Cuál sería la razón de este error en mi caso?

Lo mejor. Luciano

7voto

eldering Puntos 3814

Ha asignado un objeto al nombre dt . Por desgracia, dt es también el nombre de un función incorporada en R .

Debido a las reglas de alcance de R (aunque, como señala @ssdecontrol en los comentarios, no está claro por qué), el dt en la parte derecha de su última línea resuelve esta función, no la tabla de datos que creó. Una función en R se llama closure internamente, y está tratando de utilizar el [ sobre ella, lo que se denomina subconjunto. Por lo tanto, usted está tratando de subconjunto de un cierre, kaboom .

Para resolverlo, elija un nombre diferente para su tabla de datos en la primera línea.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X