R 一次注释多个对象
假设你有一个从a到j的变量列表R 一次注释多个对象,r,R,假设你有一个从a到j的变量列表 for(x in 1:10) { assign(letters[x],x) } 您将如何对最近创建的对象进行注释?我试过这样的方法: for(x in 1:10) { comment(get(letters[x])) <- paste(x) } (1:10中的x){code> 注释(get(字母[x])无法为返回的变量赋值,请参见: > x <- 'cars' > get(x) <- 1 Error in get(x) &l
for(x in 1:10) {
assign(letters[x],x)
}
您将如何对最近创建的对象进行注释?我试过这样的方法:
for(x in 1:10) {
comment(get(letters[x])) <- paste(x)
}
(1:10中的x){code>
注释(get(字母[x])无法为返回的变量赋值,请参见:
> x <- 'cars'
> get(x) <- 1
Error in get(x) <- 1 : could not find function "get<-"
您可以将变量连接到列表中,并对列表中的元素进行注释,例如:
> l <- list(a=1,b=2,c=3)
> for (x in 1:3) {
+ comment(l[[letters[x]]]) <- paste(x)
+ }
> str(l)
List of 3
$ a: atomic [1:1] 1
..- attr(*, "comment")= chr "1"
$ b: atomic [1:1] 2
..- attr(*, "comment")= chr "2"
$ c: atomic [1:1] 3
..- attr(*, "comment")= chr "3"
> attach(l)
The following object(s) are masked _by_ '.GlobalEnv':
a, b, c
> a
[1] 1
> str(a)
atomic [1:1] 1
- attr(*, "comment")= chr "1"
如果你想循环一些东西,那么把它们存储在一个列表中。这会让你的生活变得更简单。但是如果你真的想这样做,你可能只需要在eval(parse)上循环(thingum:
>用于(1:10中的i){
+eval(parse(text=paste(“comment”(,字母[i],”))尝试以下方法:
# sample data
letters <- setNames(as.list(1:10), LETTERS[1:10])
for(i in 1:10) {
temp <- letters[[i]]
comment(temp) <- paste(i)
letters[[i]] <- temp
}
#示例数据
字母另一种变体是get()
对象并将其分配给本地对象。将注释附加到该本地对象,然后将其分配回全局工作区
> for(x in 1:10) {
+ assign(letters[x],x)
+ }
>
> a
[1] 1
> comment(a)
NULL
>
> for(x in 1:10) {
+ obj <- get(letters[x])
+ comment(obj) <- paste(x)
+ assign(letters[x], obj)
+ }
> ## cleanup
> rm(obj)
> a
[1] 1
> comment(a)
[1] "1"
>用于(1:10中的x){
+分配(字母[x],x)
+ }
>
>a
[1] 1
>评论(a)
无效的
>
>对于(1:10中的x){
+obj rm(obj)
>a
[1] 1
>评论(a)
[1] "1"
您的代码不起作用的原因是没有替换函数版本的get()
,因此出现了关于getrequire(fortunes);fortune(106)
;-)的错误消息。我将进一步调查列表。我目前没有使用它们,是的,当我键入ls()时当我没有提供变量名的命名法时,这可能会有点让人不知所措。
> for(i in 1:10){
+ eval(parse(text=paste("comment(",letters[i],")<-'",as.character(i*2),"'",sep="")))
+ }
# sample data
letters <- setNames(as.list(1:10), LETTERS[1:10])
for(i in 1:10) {
temp <- letters[[i]]
comment(temp) <- paste(i)
letters[[i]] <- temp
}
> for(x in 1:10) {
+ assign(letters[x],x)
+ }
>
> a
[1] 1
> comment(a)
NULL
>
> for(x in 1:10) {
+ obj <- get(letters[x])
+ comment(obj) <- paste(x)
+ assign(letters[x], obj)
+ }
> ## cleanup
> rm(obj)
> a
[1] 1
> comment(a)
[1] "1"