R 一次注释多个对象

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

假设你有一个从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) <- 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()
,因此出现了关于
get
require(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"