gpt4 book ai didi

r - 获取与数据框中特定行值匹配的列名

转载 作者:行者123 更新时间:2023-12-03 19:54:56 25 4
gpt4 key购买 nike

我正在尝试获取单元格值为 1 的每一行的列名。但是我的尝试没有奏效,任何人都可以提供建议吗?

library(permute)
set.seed(42)
exampledf<- data.frame(allPerms(c(1,2,3,4)))
exampledf<-head(exampledf)

我试过这个:
apply(exampledf,2,function(x){
ll<-x[1]==1
which(ll==T)
})

数据集
  X1 X2 X3 X4
1 1 2 4 3
2 1 3 2 4
3 1 3 4 2
4 1 4 2 3
5 1 4 3 2
6 2 1 3 4

我的目标:
X1
X1
X1
X1
X1
X2

最佳答案

这是一种方法:

# construct sample data.frame
set.seed(1234)
df <- data.frame(matrix(
c(sample(1:4, 4), sample(1:4, 4),
sample(1:4, 4), sample(1:4, 4)),
ncol=4, byrow=T))
# name data.frame
names(df) <- c(paste0("x", 1:4))

# get names of variables
names(df)[apply(df, 1, function(i) which(i == 1))]

@DavidArenburg 建议的一种可能更快(尤其是对于大型数据集)的方法是
names(df)[which(df == 1, arr.ind=T)[, "col"]]

因为它不需要使用 apply功能。

注意:我构建了一个不同的 data.frame,因为我没有 permute 包。

关于r - 获取与数据框中特定行值匹配的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36960010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com