我有一个表,我需要在数据列中选择所有值,与列名匹配并从该行中获取值。防爆。数据列:选择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
答案 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