首页 > 解决方案 > 如何使用列名更改表的值

问题描述

以下代码给了我数据表

library(RMySQL)
library(reshape)
library(philentropy)
library(distances)
mydb = dbConnect(MySQL(), user='root', password='root', dbname='test_db', host='127.0.0.1')
rs = dbSendQuery(mydb,'select   cv.entity_id,cv.attribute_id, cv.value/1000 as value from   test_1 cv limit 100')
data = fetch(rs,n=-1)
pivotedData = cast(data,entity_id ~ attribute_id) 
distCalcNew = distances(pivotedData,id_variable='entity_id') 
nns <- nearest_neighbor_search(distCalcNew,k=3)
nnsdt <- data.table(nns)

我在R中有一个数据表如下,数据点表示列索引

    8456 8720 5780
1:    1    2    3
2:    3    3    2
3:    2    1    1

是否有可能获得以下内容?

    8456 8720 5780
1:  8456 8720 5780
2:  5780 5780 8720
3:  8720 8456 8456

抱歉,我是 R 新手

标签: rdata.table

解决方案


这是另一个想法,

m1 <- matrix(names(x)[unlist(x)], ncol = ncol(x))

#tidy up
setNames(data.frame(m1), names(x))
#  8456 8720 5780
#1 8456 8720 5780
#2 5780 5780 8720
#3 8720 8456 8456

推荐阅读