'daki değerleri atayın. R içerisindeki s4 sınıfları yuvalarına değerleri dinamik bir şekilde atamaya çalışıyorum. Şimdiye kadar sahip olduğum kod aşağıdadır. İç içe geçmiş tür sayısal türüyle biten aşağıdaki iç içe geçmiş sınıfları oluşturuyorum.İç içe yuvalanmış s4 sınıfı yuva adlarını dinamik olarak oluşturun ve R
[email protected]@slot = 1
ya: Ancak örneğin atama ile için alanı adlarına dinamik oluşturulmasıdır etmek Yapmak istediğim şey
slot([email protected], "slot") <- 1
setClass('slot', slots = c(slot = 'numeric'))
setClass('object', slots = c(slot = 'slot'))
object = new('object')
[email protected]@slot
Tipik assignement beklendiği gibi çalışır örneğin bir vektörden yapıştırın eval ve ayrıştırma kullanma
slot_path = c("object", "slot", "slot")
nesnesine dizeyi dönüştürmek için hile yapar ve bana nesneyi gösterir ya da burada bu durumda nesnenin yuvasına. Bununla birlikte, bu tür yapılara değerler atamak, beklendiği gibi çalışmaz gibi görünmektedir.
Error in file(filename, "r") : cannot open the connection.
Ben böyle yolu elle yapıştırırsanız:
:Error in eval(parse(text = "[email protected]@slot")) <- 1 : target of assignment expands to non-language object
eval(parse(text = "[email protected]@slot")) <- 1
ben diyor hata alıyorum
eval(parse(text = paste(slot_path, collapse="@"))) <- 2
bana diyor hata verir
ile atama yapmaya çalışılıyorişlevi de hile yapmaz. Aşağıdaki çağrı:
assign(x = slot(eval(parse(text = "[email protected]")), "slot"), value = 1)
bana hata verir: bununla Herhangi bir yardım mutluluk duyacağız
Error in assign(x = slot(eval(parse(text = "[email protected]")), "slot"), value = 1) : invalid first argument
. Sayısal için
: karakter için
eval(parse(text = eval(expression(paste(pasted_slot_path, "<-", value)))))
:
value = sprintf('"%s"',value)
eval(parse(text = eval(expression(paste(pasted_slot_path, "<-", value)))))
yuvası, bir atama yöntemi vardır istediğini olmasıdır – rawr
Çalışmıyor Nope: Yuvada hata (eval (ayrıştırma (text = "object @ slot")), "slot") <- "test": target atama dil olmayan nesneye genişler –
Bu yüzden karmaşık dizeleri için değer atamalarını ele alma gerektiği için atama işlevini kullanıyordum. –