将行值与列名匹配并在R中提取值

时间:2015-02-03 11:14:38

标签: r match

我有一个表,我需要在数据列中选择所有值,与列名匹配并从该行中获取值。防爆。数据列:选择A1,找到具有相同名称的列名(A1)并取值(1),选择A3,找到具有相同名称的列名(A3)并取值(11)然后将其打印到表中。

有人可以帮助我,我是新手使用R而且我不知道从哪里开始。

A1  A2  A3   Data
1   5   9   A1  
2   6   10  A2
3   7   11  A3
4   8   12  A4

2 个答案:

答案 0 :(得分:2)

如果您使用row.names创建data.frame作为数据列,那么它可以像下面这样简单:

mydf <- read.table(text = "A1 A2 A3 Data 
1 5 9 A1
2 6 10 A2 
3 7 11 A3 
4 8 12 A4", header = TRUE, row.names = "Data")

sapply(row.names(mydf), function(x) mydf[[x, x]])
## $A1
## [1] 1
## 
## $A2
## [1] 6
## 
## $A3
## [1] 11
## 
## $A4
## NULL
## 

mydf[x,x]只返回我的df元素,名称为x的行和名称为x的列。您可能需要调整此输出以符合您的目标。

答案 1 :(得分:2)

这个怎么样?

df[cbind(1:4, match(df$Data, names(df)))]
[1] "1"  "6"  "11" NA