我正在尝试使用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
........
答案 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的确切结构。