R 如何使用列值作为列名?

R 如何使用列值作为列名?,r,R,我有一个dataframe,其中有些列包含数据,还有一列包含列名: mydf <- data.frame( "aa" = 11:15, "ab" = 21:25, "ac" = 31:35, "nn" = c("aa", "aa", "ac", "ab", "aa")) mydf我们可以使用cbind创建一个行-列索引,然后使用它来子集数据帧 mydf[cbind(1:nrow(mydf), mydf$nn)] #[1] "11" "12" "33" "24" "15"

我有一个dataframe,其中有些列包含数据,还有一列包含列名:

mydf <- data.frame(
  "aa" = 11:15,
  "ab" = 21:25,
  "ac" = 31:35,
  "nn" = c("aa", "aa", "ac", "ab", "aa"))

mydf我们可以使用
cbind
创建一个行-列索引,然后使用它来子集数据帧

mydf[cbind(1:nrow(mydf), mydf$nn)]
#[1] "11" "12" "33" "24" "15"
或者如果你知道他们永远都是数字

as.numeric(mydf[cbind(1:nrow(mydf), mydf$nn)])
#[1] 11 12 33 24 15
在哪里

cbind(1:nrow(mydf), mydf$nn) #gives

#     [,1] [,2]
#[1,]    1    1
#[2,]    2    1
#[3,]    3    3
#[4,]    4    2
#[5,]    5    1

我们可以使用
match
返回列名索引,然后创建行/列索引以提取值

mydf[-4][cbind(seq_len(nrow(mydf)), match(mydf$nn, names(mydf)))]
#[1] 11 12 33 24 15