applyR中的函数是简化循环以获得输出的好方法.是否有一个等效函数可以帮助人们在替换向量值时避免循环?通过实例更好地理解这一点......
# Take this list for example
x = list( list(a=1,b=2), list(a=3,b=4), list(a=5,b=6) )
# To get all of the "a" elements from each list, I can do
vapply(x,"[[",1,"a")
[1] 1 3 5
# If I want to change all of the "a" elements, I cannot do
vapply(x,"[[",1,"a") = 10:12
Error in vapply(x, "[[", 1, "a") = 10:12 :
could not find function "vapply<-"
# (this error was expected)
# Instead I must do something like this...
new.a = 10:12
for(i in seq_along(x)) x[[i]]$a = new.a[i]
Run Code Online (Sandbox Code Playgroud)
使用循环是否有更简单或更快的替代方案?
Ric*_*ven 10
一种选择是首先unlist列表x,然后替换名为的值"a",然后根据列表结构替换relist新列表.ux
u <- unlist(x)
u[names(u) == "a"] <- 10:12
relist(u, x)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |