循环遍历半像列名的列

时间:2011-05-11 13:29:39

标签: r for-loop dataframe

我有以下变量和数据框

welltypes <- c("LC","HC")
qccast <- data.frame(
  LC_mean=1:10,
  HC_mean=10:1,
  BC_mean=rep(0,10)
)

现在我只想看到我选择的井型(在这种情况下是LC和HC,但它也可能是不同的。)

for(i in 1:length(welltypes)){
qccast$welltypes[i]_mean
}

这不起作用,我知道。 但是我如何循环这些列?

并且它必须发生变化,因为井型具有未知的大小。

3 个答案:

答案 0 :(得分:3)

$的第二个参数需要是第一个参数的列名。我没有运行代码,但我希望welltypes[i]_mean是语法错误。 $[[类似,因此您可以使用paste通过[[创建列名称字符串和子集。

例如:

qccast[[paste(welltypes[i],"_mean",sep="")]]

根据代码的其余部分,您可能会做出类似的事情。

for(i in paste(welltypes,"_mean",sep="")){
  qccast[[i]]
}

答案 1 :(得分:2)

这是另一种策略:

qccast[ sapply(welltypes, grep, names(qccast)) ]
   LC_mean HC_mean
1        1      10
2        2       9
3        3       8
4        4       7
5        5       6
6        6       5
7        7       4
8        8       3
9        9       2
10      10       1

答案 2 :(得分:0)

访问给定welltypes

的另一种简单方法
qccast[,paste(welltypes, '_mean', sep = "")]