R:基于字符串访问对象字段
在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='')) ) }
某些集合的N个成员
someset$example1
,someset$example2
,…,someset$exampleN
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)