使用get或paste0函数在变量中显示值

时间:2015-08-14 12:41:13

标签: r

我正在尝试使用wtype1从变量paste0获取值,但我只获取变量的名称而不是值。

> a <- data.frame(wtype1=c(1:4))

> paste0("a$wtype",1)
> "a$wtype1"

我还尝试将get函数与paste0

一起使用
> get(paste0("a$wtype",1))
Error in get(paste0("a$wtype",1)) : object 'a$wtype1' not found

编辑问题

我有一个包含1000行和10列的数据框。我必须为每一行分别计算wtype1 wtype2 wtype3 wtype4 wtype5和case1 case2 case3 case4 case5的zscores。这是我的数据框的虚拟示例

> data     
gene  wtype1  wtype2  wtype3  wtype4  wtype5  case1  case2 case3 case4 case5
A1CF    56       40     50     45      30      2       10    22     23    16 
........

结果数据框看起来像(假设这些值)

> zscores.data
 gene  wtype1  wtype2  wtype3  wtype4  wtype5  case1  case2  case3  case4  case5
 A1CF    2.1     1.1     1.7     1.4    0.6   -0.04  -0.08   -0.2    0.25 -0.09
 ........

2 个答案:

答案 0 :(得分:1)

我们可以grep分别找到以'wtype'和'case'开头的列,然后使用MARGIN=1在列的子列的每一行的OP'post中运行该函数在apply循环中。

apply(data[grep('^wtype', names(data))], 1, yourfunction)
apply(data[grep('^case', names(data))], 1, yourfunction)

答案 1 :(得分:0)

我不确定我是否正确理解你的问题,但这就是我要做的。我假设您的data.frame由

表示
a <- structure(list(wtype1 = c(4.9, 3.1, 6.6), wtype2 = c(7.6, 9, 4.4), wtype3 = c(3.8, 8.7, 6.1), wtype4 = c(9.1, 6, 2.6), wtype5 = c(8.7, 2.7, 6.5), wtype6 = c(1.9, 2.8, 0.4), wtype7 = c(9.3, 4.3, 0.9), wtype8 = c(7, 5.3, 1), wtype9 = c(4.3, 1.4, 1.7), wtype10 = c(9.1, 3.5, 1.4)), .Names = c("wtype1", "wtype2", "wtype3", "wtype4", "wtype5", "wtype6", "wtype7", "wtype8", "wtype9", "wtype10"), row.names = c(NA, 3L), class = "data.frame")

在这种情况下,您可以选择您需要处理的列(例如):

a[ colnames( a ) == "wtype3" ]
   wtype3
1     3.8
2     8.7
3     6.1

并对列进行操作。有关更详细的建议,我们需要知道data.frame的确切结构。