R- အမျိုးအစား "ပိတ်ခြင်း" ၏ အရာဝတ္တုကို မည်သို့ကိုင်တွယ်ရမည်ကို အတိအကျ မသတ်မှတ်နိုင်ပါ။


R တွင် သင်ကြုံတွေ့ရသော အမှားတစ်ခုမှာ-

 object of type 'closure' is not subsettable

လုပ်ဆောင်ချက်တစ်ခုကို ခွဲသတ်မှတ်ရန် သင်ကြိုးစားသောအခါတွင် ဤအမှားဖြစ်ပေါ်ပါသည်။

R တွင် စာရင်းခွဲများ၊ vectors၊ matrices နှင့် data frames များကို ခွဲထားနိုင်သော်လည်း function တစ်ခုတွင် အမျိုးအစားခွဲ၍မရသော “ close” ပါရှိပါသည်။

ဤအမှားအယွင်းကို ဖြေရှင်းနည်းကို ဤသင်ခန်းစာတွင် အတိအကျ ရှင်းပြထားသည်။

အမှားကို ဘယ်လိုပြန်ထုတ်မလဲ။

Vector တစ်ခုစီ၏တန်ဖိုးတစ်ခုစီကိုယူ၍ 5 ဖြင့်မြှောက်သော R တွင်အောက်ပါ function ကိုဖန်တီးသည်ဆိုပါစို့။

 #define function
cool_function <- function (x) {
  x <- x*5
  return (x)
}

ဤလုပ်ဆောင်ချက်ကို လက်တွေ့တွင် ကျွန်ုပ်တို့ မည်သို့အသုံးပြုနိုင်မည်နည်း။

 #define data
data <- c(2, 3, 3, 4, 5, 5, 6, 9)

#apply function to data
cool_function(data)

[1] 10 15 15 20 25 25 30 45

မူရင်း vector ၏ တန်ဖိုးတစ်ခုစီကို 5 ဖြင့် မြှောက်ထားကြောင်း သတိပြုပါ။

ယခုကျွန်ုပ်တို့သည် function ကိုခွဲရန်ကြိုးစားသည်ဆိုပါစို့။

 #attempt to get first element of function
cool_function[1]

Error in cool_function[1]: object of type 'closure' is not subsettable

R တွင် “ ပိတ်ခြင်း” အမျိုးအစားကို အမျိုးအစားခွဲရန် မဖြစ်နိုင်သောကြောင့် ကျွန်ုပ်တို့သည် အမှားအယွင်းတစ်ခု ရရှိခဲ့ပါသည်။

လုပ်ဆောင်ချက်သည် ‘ပိတ်ခြင်း’ အမျိုးအစား အမှန်ဖြစ်ကြောင်း စစ်ဆေးရန် အောက်ပါ syntax ကို အသုံးပြုနိုင်ပါသည်။

 #print object type of function
typeof(cool_function)

[1] “closure”

“Closure” အရာဝတ္ထုများ၏ နောက်ထပ်ဥပမာများ

R ရှိ လုပ်ဆောင်ချက်တိုင်းသည် “ ပိတ်ခြင်း” အမျိုးအစားဖြစ်သည်။ ဥပမာအားဖြင့်၊ R အခြေခံတွင် မည်သည့်လုပ်ဆောင်ချက်ကိုမဆို ခွဲထုတ်ရန် ကြိုးစားပါက၊ ကျွန်ုပ်တို့သည် ဤအမှားကို လက်ခံရရှိလိမ့်မည်-

 #attempt to subset mean function
mean[1]

Error in mean[1]: object of type 'closure' is not subsettable

#attempt to subset standard deviation function
sd[1]

Error in sd[1]: object of type 'closure' is not subsettable

#attempt to subset table function
tabld[1]

Error in table[1]: object of type 'closure' is not subsettable

အမှားကို ဘယ်လိုဖြေရှင်းမလဲ။

ဤ error ကိုဖြေရှင်းရန်နည်းလမ်းမှာ function တစ်ခုအား အဓိပ္ပါယ်ဖွင့်ဆိုခြင်းကို ရှောင်ရှားရန်ဖြစ်သည်။

ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ယခင် cool_function ကို vector တစ်ခု၏ ပထမဒြပ်စင်တွင်သာ အသုံးပြုလိုပါက၊ အောက်ပါ syntax ကို အသုံးပြုနိုင်ပါသည်။

 #apply function to just first element in vector
cool_function(data[1])

[1] 10

လုပ်ဆောင်ချက်အစား vector ကို ခွဲထားသောကြောင့် အမှားအယွင်းမရှိပေ။

သို့မဟုတ် ကျွန်ုပ်တို့သည် vector တစ်ခုလုံးတွင် cool_function ကို အသုံးပြုနိုင်သည်။

 #apply function to every element in vector
cool_function(data)

[1] 10 15 15 20 25 25 30 45

ကျွန်ုပ်တို့သည် လုပ်ဆောင်ချက်ကို မည်သည့်နည်းဖြင့်မျှ ခွဲဝေသတ်မှတ်ရန် ကြိုးပမ်းခြင်းမရှိသောကြောင့် အမှားအယွင်းတစ်ခုကို လက်ခံရရှိခြင်းမဟုတ်ပါ။

ထပ်လောင်းအရင်းအမြစ်များ

အောက်ဖော်ပြပါ သင်ခန်းစာများသည် R တွင် အခြားသော ဘုံအမှားများကို ဖြေရှင်းနည်းကို ရှင်းပြထားပါသည်။

ပြုပြင်နည်း- အခြေအနေသည် အရှည် > 1 ဖြစ်ပြီး ပထမဒြပ်စင်ကိုသာ အသုံးပြုပါမည်။
R တွင် ပြင်ဆင်နည်း- dim(X) သည် အပေါင်းအလျားရှိရမည်။
R တွင် မှန်/မမှန် လိုအပ်သည့် တန်ဖိုး ပျောက်နေပုံကို ဘယ်လိုပြင်မလဲ။
ပြင်နည်း- Coercion မှ မိတ်ဆက်ထားသော NAs

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်