Para encontrar si una columna existe en el marco de datos o no
110
Tengo un data.frame con el nombre "abcframe"
a b c
111223
¿Cómo puedo saber si una columna existe o no en un marco de datos determinado? Por ejemplo, me gustaría saber si existe una columna d en el data.frame abcframe .
¿Quiere saber si su marco de datos tiene una columna con el nombre de d, o desea saber si un vector dado des igual a una de las columnas de su marco de datos?
Quiero saber si el marco de datos tiene una nube con el nombre d o no
Sunny Sunny
¡Te deseo un buen día soleado con 100 votos! :-)
TMS
Respuestas:
196
Suponiendo que el nombre de su marco de datos es daty que el nombre de su columna para verificar es "d", puede usar el %in%operador:
if("d"%in% colnames(dat)){
cat("Yep, it's in there!\n");}
si está buscando lo inverso, es decir, si la columna no está allí, simplemente agregue !al principio:if(!"d"%in% colnames(dat))
toto_tico
Respuesta impresionante. ¿Cómo extiendo esto si estuviera buscando las columnas 'd' y 'e' y 'f'? ¿Sería eso: if("d" & "e" & "f" %in% colnames(dat)) { cat("Yep, it's in there!\n"); }. ¡Gracias! - Oh, es posible que haya encontrado la respuesta yo mismo: stackoverflow.com/questions/21770912/… .
Sander W.van der Laan
6
all (c ("d", "e", "f")% en% colnames (dat))
skan
24
Tiene varias opciones, incluido el uso %in%y grepl:
dat <- data.frame(a=1:2, b=2:3, c=4:5)
dat
a b c
11242235
Para obtener los nombres de las columnas:
names(dat)[1]"a""b""c"
Úselo %in%para verificar la membresía:
"d"%in% names(dat)[1]FALSE
Or use `grepl` to check for a match:
grepl("d", names(dat))[1]FALSEFALSEFALSE
También puede usar if(!is.null(abcframe$d))para probar si dexiste en abcframe.
dat <- data.frame(a =1:2, b =2:3, c =4:5)if(!is.null(dat$d)){
print("d exists")}else{
print("d does not exist")}if(!is.null(dat$a)){
print("a exists")}else{
print("a does not exist")}
d
, o desea saber si un vector dadod
es igual a una de las columnas de su marco de datos?Respuestas:
Suponiendo que el nombre de su marco de datos es
dat
y que el nombre de su columna para verificar es"d"
, puede usar el%in%
operador:fuente
!
al principio:if(!"d"%in% colnames(dat))
if("d" & "e" & "f" %in% colnames(dat)) { cat("Yep, it's in there!\n"); }
. ¡Gracias! - Oh, es posible que haya encontrado la respuesta yo mismo: stackoverflow.com/questions/21770912/… .Tiene varias opciones, incluido el uso
%in%
ygrepl
:Para obtener los nombres de las columnas:
Úselo
%in%
para verificar la membresía:fuente
grepl
un poco más de precisión, puede usargrepl("^d$",names(dat))
, para asegurarse de que una columna con nombredd
no regreseTRUE
.colnames
no funcionó para mí, pero lonames
hizo.Podrías usar
any
:fuente
También puede usar
if(!is.null(abcframe$d))
para probar sid
existe enabcframe
.fuente