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

时间:2015-04-22 05:17:22

标签: r

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

请考虑以下事项:

  1. 我想访问对象some_set
  2. N 成员
  3. 特别是字段:someset$example1someset$example2,...,someset$exampleN
  4. 我打算根据这些字段的迭代获得一个新字段。例如,映射 N 二进制字段∋∋∃∈[0, N ]
  5. 直观地说,使用这样的东西是有道理的:

    for (i in 1:N ) {
       doSomething( get(paste0("someset$example",i,sep='')) )
    }
    

    然而,这会产生:object 'someset$example1' not found

    当然,在控制台中键入someset$example1会产生正确的值。

    乞求问题,如果get(str)是我们访问对象的方式,那么我们如何访问对象的字段?

1 个答案:

答案 0 :(得分:1)

尝试[[[而不是$

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

注意:根据问题,您可能不需要for循环。对于上述情况,使用colMeans会更容易。

如果'someset'是一个字符串

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

数据

someset <- data.frame(example1=1:5, example2=6:10, example3=11:15)
N <- ncol(someset)