R:基于字符串访问对象字段

R:基于字符串访问对象字段,r,R,在R中安排处理数据时,通常需要完成一些琐碎的转换 考虑以下几点: 我想访问对象某些集合的N个成员 特别是字段:someset$example1,someset$example2,…,someset$exampleN 我打算在迭代这些字段的基础上获得一个新字段。例如,映射N个二进制字段∋ ∃ ℕ∈[0,N] 直觉上,使用这样的东西是有意义的: for (i in 1:N ) { doSomething( get(paste0("someset$example",i,sep='')) ) }

在R中安排处理数据时,通常需要完成一些琐碎的转换

考虑以下几点:

  • 我想访问对象
    某些集合的N个成员
  • 特别是字段:
    someset$example1
    someset$example2
    ,…,
    someset$exampleN
  • 我打算在迭代这些字段的基础上获得一个新字段。例如,映射N个二进制字段∋ ∃ ℕ∈[0,N]
  • 直觉上,使用这样的东西是有意义的:

    for (i in 1:N ) {
       doSomething( get(paste0("someset$example",i,sep='')) )
    }
    
    但是这会产生:
    object'someset$example1'未找到

    当然,在控制台中键入
    someset$example1
    可以得到正确的值


    问一个问题,如果
    get(str)
    是我们如何访问对象的,那么我们如何访问对象的字段?

    尝试
    [
    [[/code>而不是
    $

    for(i in 1:N){ print(mean(someset[[paste0('example', i)]]))}
    #[1] 3
    #[1] 8
    #[1] 13
    
    注意:根据问题的不同,您可能不需要对
    循环使用
    。对于上述情况,使用
    colMeans
    会更容易

    如果“someset”是字符串

    Var <- "someset"
    for(i in 1:N){ print(mean(get(Var)[[paste0('example', i)]]))}
    #[1] 3
    #[1] 8
    #[1] 13
    

    Var也许快速阅读一下R简介会帮助您更好地理解R的工作原理。@marbel我认为$and[]运算符是函数等价物显然在这里很关键,但在这个问题中,关键点是字符串到索引变量的转换,这在提供的文档中没有涉及,也不是天生的明显。文档介绍了如何在R中索引向量。我只是想帮你。如果你觉得注释没有用处,那没关系。其他人可能会发现它很有用。
    
    someset <- data.frame(example1=1:5, example2=6:10, example3=11:15)
    N <- ncol(someset)