मेरे पास एक मैट्रिक्स है और मैं उनके नाम से दो कॉलम खत्म करना चाहता हूं। मेरा कोड था:

trn_data = subset(trn_data, select = -c("Rye flour","Barley products"))

लेकिन आर ने मुझे इस तरह एक त्रुटि संदेश दिया:

Error in -c("Rye flour", "Barley products") : 
  invalid argument to unary operator

मैंने यह कोशिश की

trn_data = subset(trn_data, select = -c(Rye flour,Barley products))

एक त्रुटि भी लौटा रहा है:

Error: unexpected symbol in "trn_data=subset(trn_data,select =-c(Rye flour"

मैं इसे कैसे ठीक करूं? क्या कोई अन्य तरीका है जो दो स्तंभों को उनके नाम से समाप्त कर सकता है?

2
Christina 13 नवम्बर 2019, 19:02
स्टैक ओवरफ़्लो में आपका स्वागत है! आपको एक reproducible example उपलब्ध कराना चाहिए।
 – 
M--
13 नवम्बर 2019, 19:03
names(trn_data) क्या लौटाता है? क्या आप सुनिश्चित हैं कि ये सही कॉलम नाम हैं? यदि आप एक आसान reproducible example शामिल करते हैं, तो आपकी मदद करना आसान हो जाता है। नमूना इनपुट और वांछित आउटपुट के साथ जिसका उपयोग संभावित समाधानों का परीक्षण और सत्यापन करने के लिए किया जा सकता है।
 – 
MrFlick
13 नवम्बर 2019, 19:10

2 जवाब

सबसे बढ़िया उत्तर

आपको characters से subset के नाम नहीं देने चाहिए। यह काम:

trn_data_subset <- subset(trn_data, select = -c(`Rye flour`,`Barley products`))

यदि आपके पास कॉलम के नाम पर रिक्त स्थान हैं, तो आपको ग्रेव एक्सेंट का उपयोग करना चाहिए।

यहाँ mtcars डेटासेट का उपयोग करके एक उदाहरण दिया गया है:

mtexapmple <- mtcars[1:4,]
names(mtexapmple)[1] <- "mpg with space"

mtexapmple
#>                mpg with space cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4                21.0   6  160 110 3.90 2.620 16.46  0  1    4 4
#> Mazda RX4 Wag            21.0   6  160 110 3.90 2.875 17.02  0  1    4 4
#> Datsun 710               22.8   4  108  93 3.85 2.320 18.61  1  1    4 1
#> Hornet 4 Drive           21.4   6  258 110 3.08 3.215 19.44  1  0    3 1


subset(mtexapmple, select = -c(`mpg with space`, `cyl`))
#>                disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4       160 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag   160 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710      108  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive  258 110 3.08 3.215 19.44  1  0    3    1

आप इसे इस तरह भी कर सकते हैं:

within(trn_data, rm(`Rye flour`,`Barley products`))

या

trn_data[, !(colnames(trn_data) %in% c("Rye flour","Barley products"))]
1
M-- 13 नवम्बर 2019, 19:21

dplyr के साथ, हम अभी भी - दोहरे उद्धरण चिह्नों के साथ उपयोग कर सकते हैं

library(dplyr)
mtexample %>%
     select(-"mpg with space")
#               cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4        6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag    6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710       4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive   6  258 110 3.08 3.215 19.44  1  0    3    1

आंकड़े

mtexample <- mtcars[1:4,]
names(mtexample)[1] <- "mpg with space"
1
akrun 13 नवम्बर 2019, 20:10