मैं किसी दिए गए निर्देशांक के साथ एक बिंदु के मानदंड की गणना के लिए आर का उपयोग करके गणनाओं के कुछ सेट को प्राप्त करने की कोशिश कर रहा हूं और फिर अधिकतम लेता हूं और फिर उसमें से वर्ग निकालता हूं।

मैंने निम्नलिखित कोशिश की है:

a <- c(-0.5,1)
b <- c(-1,-1.5)
c <- c(-1.5,1.5)
d <- c(1.5,-0.5)
e <- c(0.5,-0.5)
df <- data.frame(a,b,c,d,e)

अधिक विस्तृत तरीके से, मैं यही करना चाहता हूं:

task

मैंने norm का उपयोग करने और Frobenius का उपयोग करने का प्रयास किया, लेकिन मैं बाद में उपयोग किए जाने वाले फ़ंक्शन में सब कुछ रखना चाहता हूं। क्योंकि मैन्युअल रूप से जब मैं इन कार्यों के लिए वैक्टर बनाता हूं तो हर बिंदु की गणना करना बहुत कठिन हो जाता है। इसे करने के लिए एक कुशल/सरल तरीका खोज रहे हैं।

1
Ranji Raj 12 मई 2021, 20:10

1 उत्तर

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

हम across कॉलम को लूप करते हैं, तत्वों का वर्ग प्राप्त करते हैं, sum इसे, वर्गमूल के साथ वापस करते हैं, max प्राप्त करते हैं और इसे स्क्वायर करते हैं

library(dplyr)
df %>%
   summarise(across(everything(), ~ sqrt(sum(.^2)))) %>% 
   max %>%
   .^2
#[1] 4.5

base R में, हम उपयोग कर सकते हैं

max(sqrt(colSums(df^2)))^2
#[1] 4.5

यदि हम सभी अंकों के साथ print चाहते हैं, तो digits को print में निर्दिष्ट करें

print(max(sqrt(colSums(df^2)))^2, digits = 16)
#[1] 4.499999999999999
2
akrun 12 मई 2021, 20:22
क्या इस गणना के लिए data.matrix() की आवश्यकता है जिसे मैंने अपने प्रश्न में पोस्ट किया है?
 – 
Ranji Raj
12 मई 2021, 20:16
1
इस गणना की कोई आवश्यकता नहीं है, हालांकि मैट्रिक्स के साथ प्रदर्शन में सुधार हो सकता है
 – 
akrun
12 मई 2021, 20:17
साथ ही, आउटपुट की ग्रैन्युलैरिटी को बनाए रखने का कोई तरीका है जो मुझे वास्तव में मिल रहा है, जब मैं पाइथन में लागू करता हूं तो मुझे जो मूल्य मिलता है वह है 4.499999999999999 क्या यह अंतर्निहित डेटा संरचना के कारण है जो ऐसा कर रहा है या हमारे पास हो सकता है मूल्य का वास्तविक प्रतिनिधित्व?
 – 
Ranji Raj
12 मई 2021, 20:20
1
यह दोनों सॉफ्टवेयर में सटीक समायोजन में कुछ अंतर के कारण हो सकता है
 – 
akrun
12 मई 2021, 20:21
1
क्या आप कृपया मेरी पोस्ट में अपडेट देख सकते हैं
 – 
akrun
12 मई 2021, 20:22