y <- list(a = 1, b = 2)
y["b"] <- list(NULL)

Bekerja dengan baik.

Kemudian saya mencoba skrip di bawah ini tetapi gagal:

> list(a = 1, b = 2)['b']<-list(NULL)
Error in list(a = 1, b = 2)["b"] <- list(NULL) : 
  target of assignment expands to non-language object

Saya memeriksa postingan sebelumnya , lalu mencoba assign:

> assign(list(a = 1, b = 2)['b'],list(NULL))
Error in assign(list(a = 1, b = 2)["b"], list(NULL)) : 
  invalid first argument

Saya pikir list(a = 1, b = 2)['b'] sama dengan y["b"], apa yang salah dengan list(a = 1, b = 2)['b']<-list(NULL)?

r
0
kittygirl 24 Mei 2020, 18:36

1 menjawab

Jawaban Terbaik

Anda dapat menulis fungsi Anda sendiri:

change <- function(my_list,name,value){
    my_list[name] <- value
    my_list
}

Kemudian change(list(a = 1, b = 2),'b',list(NULL)) berfungsi seperti (mungkin) diharapkan, meskipun semantiknya adalah membuat daftar baru daripada memodifikasi yang lama. Jika Anda benar-benar ingin mengubah daftar anonim, mungkin Rcpp dapat digunakan untuk melakukannya dengan pointer.

1
John Coleman 24 Mei 2020, 16:20