【发布时间】:2017-12-14 02:33:29
【问题描述】:
除了我的替换要求是那些(“1”)被替换为所在列的名称。
示例设置
df1<-data.frame(replicate(5,sample(0:1,5,rep=TRUE)))
row.names(df1)<-c("hootsuite","foodtank","FarmsNews","agchat","TysonFoods")
names(df1)<-c("food","agvocate","editor","gmo","ag")
food agvocate editor gmo ag
hootsuite 1 1 0 0 1
foodtank 1 1 0 0 1
FarmsNews 1 0 1 0 1
agchat 0 0 0 0 1
TysonFoods 1 0 1 1 0
会变成
food agvocate editor gmo ag
hootsuite food agvocate 0 0 ag
foodtank food agvocate 0 0 ag
FarmsNews food 0 editor 0 ag
agchat 0 0 0 0 ag
TysonFoods food 0 editor gmo 0
similar post中的解决方案
df1*df2[,1][col(df1)]
or
sweep(df1, 2, df2[,1], "*")
(使用下面定义的 df2)
df2<-c("food","agvocate","editor","gmo","ag")
df2<-as.matrix(df2)
row.names(df2)<-c("food","agvocate","editor","gmo","ag")
给出一个错误“FUN(left, right) 中的错误:二元运算符的非数字参数”,这意味着矩阵乘法确实不适用于字符;)
那么我应该采取的方法是什么?
【问题讨论】: