【问题标题】:Dynamically get the values from a matrix从矩阵中动态获取值
【发布时间】:2019-10-09 03:40:33
【问题描述】:

我想根据转换矩阵中的值向我的数据框添加一个新列。

我尝试了这个解决方案 [R extract values from matrix given dataframe of x and y,但它似乎适用于作为索引的数字,而且我的行和列都有字符名称。

例如:

r
x<- 
cbind(c(0.3,0.35,0.35,0),c(0.2,0.2,0.4,0.2)
,c(0,0.6,0.1,0.3),c(0.5,0.25,0.25,0))
colnames(x) <- c("A","B","C","D")
rownames(x) <- c("A","B","C","D")

y<-as.data.frame(cbind(c(1,2,3,4,5,6)
,c("A","A","B","A","B","A"),c("D","C","C","D","D","D")))
colnames(y) <- c("id","e1","e2")

index_df = y%>% select(e1,e2)
colnames(index_df)<-c('rows','cols')

y[as.matrix(index_df)]

我收到这个错误

as.matrix(x)[i] 中的错误:下标越界

我想用矩阵中的值将列名 l1 添加到 y 数据框

   id e1 e2 l1  
1  1  A  D  0.50  
2  2  A  C  0.0  
3  3  B  C  0.2  
4  4  A  D  0.50  
5  5  B  D  0.25  
6  6  A  D  0.50  

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    我们需要使用正确的数据集来提取值。在这里,“y”没有匹配的行或列。它是'x'

    y$l1 <- x[as.matrix(index_df)]
    y$l1
    #[1] 0.50 0.00 0.60 0.50 0.25 0.50
    

    【讨论】:

    • 感谢您的指正!我构建错误的示例没问题,但我仍然在真实数据上遇到问题。我会用真实数据更新帖子。
    • @OscarBenitez 当然,会检查一下
    • 发现问题!数据框“y”的“e1”和“e2”变量与矩阵的行名和列名没有相同的字符串。只需替换一个难以捉摸的下划线就可以了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多