我在这里尝试了一些建议的解决方案。但这不适用于我的情况。
我有一个代码,在这里:
a <- read.table("Whirr_127.csv", header=T, sep=",", row.names=1) # task assignment / people vs task
b <- read.table("Files_Whirr_127.csv", header=T, sep=",", row.names=1) #task vs files
a
b
#calc cr , cr = ta * tf * transpose(ta)
cr <- as.matrix(a) %*% (as.matrix(b) %*% as.matrix(t(b)) %*% as.matrix(t(a)))
cr
#set value to 1, to initialize table
cr[cr>=1]<-1
cr
#identify diagonal matrix, set to zero
cr<-as.matrix(0,ncol=ncol(cr),nrow=nrow(cr))
cr<-diag(cr,x=0)
我想将对角线值设置为零。似乎最后两行中使用的代码不适用于我的情况。
另外,我想在
a
中使用文件名,并将其保存为AB_Files_Whirr_127.csv我尝试使用
write.csv(cr,file = paste("CR_", a,".csv")
但是,我的目录中没有任何内容。
cr的样本输出:
Adrian Cole Alison Wong Andrei Savu Bruno Dumon Edward J. Yoon Eugene Koontz Jakob Homan Kelvin Kakugawa Kirk True Lars George Soren Macbeth Stu Hood
Adrian Cole 0 0 0 0 0 0 0 0 0 0 0 0
Alison Wong 0 0 0 0 0 0 0 0 0 0 0 0
Andrei Savu 0 0 1 0 0 0 0 0 0 1 1 0
Bruno Dumon 0 0 0 0 0 0 0 0 0 0 0 0
Edward J. Yoon 0 0 0 0 0 0 0 0 0 0 0 0
Eugene Koontz 0 0 0 0 0 0 0 0 0 0 0 0
Jakob Homan 0 0 0 0 0 0 0 0 0 0 0 0
Kelvin Kakugawa 0 0 0 0 0 0 0 0 0 0 0 0
Kirk True 0 0 0 0 0 0 0 0 0 0 0 0
Lars George 0 0 1 0 0 0 0 0 0 1 1 0
Soren Macbeth 0 0 1 0 0 0 0 0 0 1 1 0
Stu Hood 0 0 0 0 0 0 0 0 0 0 0 0
Tibor Kiss 0 0 0 0 0 0 0 0 0 0 0 0
Tom White 0 0 1 0 0 0 0 0 0 1 1 0
Unassigned 0 0 0 0 0 0 0 0 0 0 0 0
Tibor Kiss Tom White Unassigned
Adrian Cole 0 0 0
Alison Wong 0 0 0
Andrei Savu 0 1 0
Bruno Dumon 0 0 0
Edward J. Yoon 0 0 0
Eugene Koontz 0 0 0
Jakob Homan 0 0 0
Kelvin Kakugawa 0 0 0
Kirk True 0 0 0
Lars George 0 1 0
Soren Macbeth 0 1 0
Stu Hood 0 0 0
Tibor Kiss 0 0 0
Tom White 0 1 0
Unassigned 0 0 0
最佳答案
a
不能用于输出文件的名称,因为它不是字符变量,而是数据帧。
infile <- "Whirr_127.csv"
a <- read.table(infile, header=T, sep=",", row.names=1)
....
diag(cr) <- 0
write.csv(cr, file = paste0("CR_", infile, ".csv")
diag
行的语法对于新R用户来说似乎很有趣,但是实际上它只是调用赋值函数diag<-
的另一种语法,即diag(x) <- 0
被解释为diag<-(x, 0)
。更新:多个文件
如果要对多个配对文件重复上述操作,可以执行此操作。
a.files <- grep("^Whirr", dir(), value=TRUE)
b.files <- paste0("Files_", a.files)
for(i in length(a.files)){
a <- read.table(a.files[i], ...)
b <- read.table(b.files[i], ...)
...
write.csv(cr, paste0("CR_", a.files[i], ".csv"))
}
关于r - 将矩阵的对角线在R中设置为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12471780/