मुझे अपने data.frame में एक विशिष्ट प्रकार में एक विशिष्ट मान वाले कॉलम की संख्या चाहिए। स्पष्ट रूप से तार और संख्याओं को समान माना जाता है। क्या तार और संख्याओं के बीच अंतर करने का कोई तरीका है?

foo <- data.frame(x = c("1", "2", "-99", "4", "5"), y = c(11, 12, -99, -99, 15))
#gives 2 but should be 1:     
sum(apply(foo, 2, function(x) {-99 %in% x})) 
#gives 2 but should be 1: 
sum(apply(foo, 2, function(x) {"-99" %in% x}))
0
vanao veneri 19 अक्टूबर 2020, 17:54

1 उत्तर

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

इस तरह:

sum(sapply(foo, function(x) any(sapply(x, identical, -99))))
#> 1
sum(sapply(foo, function(x) any(sapply(x, identical, "-99"))))
#> 1

यदि आप identical को वेक्टर करने के लिए प्रभावी तरीकों की तलाश कर रहे हैं, तो आप इसे देख सकते हैं प्रश्न

1
Edo 19 अक्टूबर 2020, 18:12