यह पता लगाने के लिए कि डेटा फ्रेम में कोई कॉलम मौजूद है या नहीं


110

मेरे पास "abcframe" नाम के साथ एक data.frame है

     a  b  c
     1  1  1
     2  2  3

किसी डेटा फ्रेम में कॉलम मौजूद है या नहीं, मुझे कैसे पता चलेगा? उदाहरण के लिए, मैं यह खोजना चाहूंगा कि क्या कोई कॉलम d डेटा में मौजूद है । एफ़टीपी


1
क्या आप जानना चाहते हैं कि क्या आपके डेटा फ़्रेम में किसी नाम के साथ एक कॉलम है d, या क्या आप जानना चाहते हैं कि क्या कोई वेक्टर dआपके डेटा फ्रेम के कॉलम में से एक के बराबर है?

मैं यह जानना चाहता हूं कि क्या डेटाफ्रेम का नाम डी के साथ एक बादल है या नहीं
सनी सनी

100 वोटों के साथ आपको शुभकामनाएं सनी दिन! :-)
टीएमएस

जवाबों:


196

यह मानते हुए कि आपके डेटा फ़्रेम का नाम है datऔर यह जांचने के लिए आपका कॉलम नाम है "d", आप %in%ऑपरेटर का उपयोग कर सकते हैं :

if("d" %in% colnames(dat))
{
  cat("Yep, it's in there!\n");
}

6
यदि आप प्रतिलोम देख रहे हैं, यानी यदि स्तंभ नहीं है, !तो शुरुआत में जोड़ें :if(!"d"%in% colnames(dat))
toto_tico

बहुत बढ़िया जवाब। यदि मैं कॉलम 'd' और 'e' और 'f' की तलाश करूं तो मैं इसे कैसे बढ़ाऊं? यह होगा if("d" & "e" & "f" %in% colnames(dat)) { cat("Yep, it's in there!\n"); }:। धन्यवाद! - ओह, मुझे खुद ही जवाब मिल गया होगा: stackoverflow.com/questions/21770912/…
सैंडर डब्ल्यू। वैन डेर लान

6
सभी (सी ("डी", "ई", "एफ")% इन% कॉलनम्स (डीएटी))
स्कैन

24

आपके पास उपयोग %in%और सहित कई विकल्प हैं grepl:

dat <- data.frame(a=1:2, b=2:3, c=4:5)
dat
  a b c
1 1 2 4
2 2 3 5

स्तंभों के नाम प्राप्त करने के लिए:

names(dat)
[1] "a" "b" "c"

%in%सदस्यता के लिए जाँच करने के लिए उपयोग करें :

"d" %in% names(dat)
[1] FALSE

Or use `grepl` to check for a match:

grepl("d", names(dat))
[1] FALSE FALSE FALSE

11
प्राप्त करने के लिए greplएक और अधिक सटीक सा, आप इस्तेमाल कर सकते हैं grepl("^d$",names(dat)), यह सुनिश्चित करें कि नाम से कोई स्तंभ ddवापस नहीं करता है TRUE
बेनबर्न्स

इसके लिए धन्यवाद, colnamesमेरे लिए काम नहीं किया , लेकिन namesकिया।
डॉकोनोक्ट

@ और कॉलम दो बड़े डेटाफ्रेम से कॉलम की तुलना करने का एक तरीका है यह देखने के लिए कि कौन से कॉलम के नाम दूसरे कॉलम से गायब हैं?
सर


2

आप यह if(!is.null(abcframe$d))जांचने के लिए भी उपयोग कर सकते हैं कि क्या dमौजूद है 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")
}

2
दिलचस्प बात यह है कि यह साफ-सुथरे टिबबल के साथ विफल हो जाता है, क्योंकि 'डेट $ डी' चेतावनी को फेंक देगा।
मिरेट्रिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.