- 此问题在此处已有答案**:
Dictionary style replace multiple items(11个答案)
3天前关闭。
我得到了这个df与一些排名(1为最大的数字,2为第二个...):
Rank.Df = data.frame(A1 = c(1, NA, NA),
A2 = c(2, 1, NA),
A3 = c(2, 1 , 3)); Rank.Df
我得到了一个向量和相应的数字:
Values = c(50,40,30) #50 is the value for rank 1, 40 is for rank 2 and 30 is for rank 3
但我尝试用向量中的值替换排名 Dataframe ,我甚至可以这么做,但速度很慢:
# First I created another data frame to store the data
Df.results = data.frame(A1 = NA,
A2 = NA,
A3 = NA)
# And then loop through all combinations between rows and columns
for(i in 1:nrow(Rank.Df)) {
for(k in 1:ncol(Rank.Df)) {
Df.results[i,k] = Values[Rank.Df[i,k]]
}
}
我想有更聪明的方法来做这个手术,我只是不知道怎么做。
1条答案
按热度按时间khbbv19g1#
这里不需要循环,相反,你可以把数据框转换成矩阵,整个操作将被矢量化: