gpt4 book ai didi

r - 使用双矩阵查找填充数据框中的新列

转载 作者:行者123 更新时间:2023-12-02 17:46:42 25 4
gpt4 key购买 nike

我有一个数据框 df:

colour  shape
'red' circle
'blue' square
'blue' circle
'green' sphere

以及一个具有命名行/列的双矩阵 m

      circle square sphere  
red 1 4 7
blue 2 5 8
green 3 6 9

我想向 DF 添加一个新列,以便获得:

id  colour  shape
1 'red' circle
5 'blue' square
2 'blue' circle
9 'green' sphere

我尝试使用以下代码执行此操作,但似乎不起作用:

df$id <- m[df$colour,df$shape]

我也尝试过 apply();和类似但没有运气。谁能告诉我在不使用循环的情况下执行此操作的正确方法?

最佳答案

我想我可能会赢得这里的最短答案竞赛,只要这些是字符向量而不是可能更预期的因素,除非你做出具体的努力来避免。它实际上只添加了 cbind 将两个 df“字符”向量转换为 [.matrix 函数所期望的两列矩阵,您已经非常接近成功使用了。 (而且它看起来也相当具有表现力。)

# Data construct
d <- data.frame(color=c('red','blue','blue','green'),
shape=c('circle','square','circle','sphere'), stringsAsFactors=FALSE)
m <- matrix(1:9, 3,3, dimnames=list(c('red','blue','green'), c('circle','square','sphere')))
# Code:

d$id <- with( d, m [ cbind(color, shape) ] )
d
color shape id
1 red circle 1
2 blue square 5
3 blue circle 2
4 green sphere 9

关于r - 使用双矩阵查找填充数据框中的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812679/

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