gpt4 book ai didi

使用 r 中的数据框替换列名

转载 作者:行者123 更新时间:2023-12-04 11:29:21 25 4
gpt4 key购买 nike

我有矩阵

m <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE,dimnames = list(c("s1", "s2", "s3"),c("tom", "dick","bob")))

tom dick bob
s1 1 2 3
s2 4 5 6
s3 7 8 9

#and the data frame

current<-c("tom", "dick","harry","bob")
replacement<-c("x","y","z","b")
df<-data.frame(current,replacement)

current replacement
1 tom x
2 dick y
3 harry z
4 bob b

#I need to replace the existing names i.e. df$current with df$replacement if
#colnames(m) are equal to df$current thereby producing the following matrix


m <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE,dimnames = list(c("s1", "s2", "s3"),c("x", "y","b")))

x y b
s1 1 2 3
s2 4 5 6
s3 7 8 9

有什么建议吗?我应该使用“if”循环吗?谢谢。

最佳答案

您可以使用 which匹配 colnames来自 m使用 df$current 中的值.然后,当您拥有索引时,您可以从 df$replacement 中子集替换列名。 .

colnames(m) = df$replacement[which(df$current %in% colnames(m))]

在上面:
  • %in% TRUE 的测试或 FALSE对于被比较的对象之间的任何匹配。
  • which(df$current %in% colnames(m))标识匹配名称的索引(在本例中为行号)。
  • df$replacement[...]是对列进行子集化的基本方法 df$replacement仅返回与步骤 2 匹配的行。
  • 关于使用 r 中的数据框替换列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11518958/

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