gpt4 book ai didi

R:处理包含字符串和 bool 值的 data.frames

转载 作者:行者123 更新时间:2023-12-04 10:53:20 24 4
gpt4 key购买 nike

我在 R 中有一个 data.frame;它叫做 p。 data.frame 中的每个元素要么为 True,要么为 False。例如,我的变量 pm 行和 n 列。对于每一行,严格只有一个 TRUE 元素。

它还有列名,是字符串。我想做的是:

  1. 对于 p 中的每一行,我都看到一个 TRUE 我想用相应列的名称替换
  2. 然后我想将现在包含 FALSE 和列名的 data.frame 折叠成一个向量,它将包含 m 个元素。
  3. 我想以 R-thonic 的方式来做这件事,以便继续我在 R 中的启蒙,并为一个没有 for 循环的世界做出贡献。

我可以使用以下 for 循环执行第 1 步:

for (i in seq(length(colnames(p)))) {
p[p[,i]==TRUE,i]=colnames(p)[i]
}

但是这里没有美,我完全赞同这种 for-loops-in-R-are-probably-wrong 的心态。也许错误太严重了,但它们肯定不是很好。

我真的不知道如何执行第 2 步。我有点希望字符串和 FALSE 的总和会返回字符串,但事实并非如此。我有点希望我可以使用某种 OR 运算符,但不太明白(Python 以 'bob' 响应 False 或 'bob')。因此,我再一次向你们美丽的 Rstats 人求助!

最佳答案

这是一些示例数据:

df <- data.frame(a=c(FALSE, TRUE, FALSE), b=c(TRUE, FALSE, FALSE), c=c(FALSE, FALSE, TRUE))

你可以使用 apply 来做这样的事情:

names(df)[apply(df, 1, which)]

或者不用apply直接使用which:

idx <- which(as.matrix(df), arr.ind=T)
names(df)[idx[order(idx[,1]),"col"]]

关于R:处理包含字符串和 bool 值的 data.frames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684715/

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