在R中的apply语句中引用列名和行名
我在R中有一个数据帧,看起来像下面的那个在R中的apply语句中引用列名和行名,r,R,我在R中有一个数据帧,看起来像下面的那个 a b c d e f 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 0 summation <- function (x,y) (return (sum(data$x * data$y))) 数据库很大,跨越100多列和5000行,包含所有二进制文件(0和1)。我想在R中的每一列和每一列之间构造一个重叠。类似于下面给出
a b c d e f
0 1 1 0 0 0
1 1 1 1 0 1
0 0 0 1 0 1
1 0 0 1 0 1
1 1 1 0 0 0
summation <- function (x,y) (return (sum(data$x * data$y)))
数据库很大,跨越100多列和5000行,包含所有二进制文件(0和1)。我想在R中的每一列和每一列之间构造一个重叠。类似于下面给出的一个。此重叠数据帧将是一个具有相同行数和列数的方形矩阵,并且与第一个数据帧中的列数相同
a b c d e f
a 3 2 2 2 0 2
b 2 3 3 3 0 1
c 2 3 3 1 0 1
d 2 3 1 3 0 3
e 0 0 0 0 0 0
f 2 1 1 3 0 3
第二个数据帧的每个单元格都由行和列在第一个数据帧中都有1的情况数填充
a b c d e f
a 3 2 2 2 0 2
b 2 3 3 3 0 1
c 2 3 3 1 0 1
d 2 3 1 3 0 3
e 0 0 0 0 0 0
f 2 1 1 3 0 3
我在考虑这样构造一个空矩阵:
df <- matrix(ncol = ncol(data), nrow = ncol(data))
colnames(df) <- names(data)
rownames(df) <- names(data)
df您正在寻找crossprod
crossprod(as.matrix(df1))
# a b c d e f
#a 3 2 2 2 0 2
#b 2 3 3 1 0 1
#c 2 3 3 1 0 1
#d 2 1 1 3 0 3
#e 0 0 0 0 0 0
#f 2 1 1 3 0 3
数据
df1 <- structure(list(a = c(0L, 1L, 0L, 1L, 1L), b = c(1L, 1L, 0L, 0L,
1L), c = c(1L, 1L, 0L, 0L, 1L), d = c(0L, 1L, 1L, 1L, 0L), e = c(0L,
0L, 0L, 0L, 0L), f = c(0L, 1L, 1L, 1L, 0L)), .Names = c("a",
"b", "c", "d", "e", "f"), class = "data.frame", row.names = c(NA,
-5L))
df1或显式(但根据?crossprod
)稍微慢一点):t(as.matrix(df))%*%as.matrix(df)
。无论如何+1.谢谢你,马库斯。太棒了。。一行代码,表示我一直在争论的问题。:)