您好,我有一个非常大的数据框,它是一部分:
v1 <- c('i1', 'i10', 'i11')
v2 <- c(0.11, 0.07, 0.114)
v3 <- c(0.07, 0.08, 0.03)
df <- data.frame(cbind(v1, v2, v3))
如何编写代码将每一行转换为一个组合向量x <- c()
?
也就是说,我的预期输出应该是,变量名必须来自第V1
列:
i1 <- c(0.11014318, 0.07302843, 0.01360761, 0.10619829, 0.14513045)
i10 <- c(0.07360007, 0.08013833, 0.13104657, 0.13174247, 0.14256615)
i11 <- c(0.11418245, 0.03300573, 0.11425297, 0.13686428, 0.03367279)
在将每一行转换成一个向量之后,我需要计算这些向量之间的余弦相似性,这就是为什么我需要拆分每一行,并将它们保存为第一列V1
中的向量.
library(lsa)
cosine(i1, i10)
cosine(i1, i11)
cosine(i10, i11)
The following question
你好SamR.感谢您的帮助,但我不知道为什么在添加更多列V4
和V5
以及一行ID为i12
时它不起作用?非常感谢你的耐心和帮助.
data_matrix <- function(df){
data_matrix <- tail(t(df), -1) |>
sapply(as.numeric) |>
matrix(
nrow = ncol(df)-1,
ncol = nrow(df),
dimnames = list(
seq_len(nrow(df)-1), # rows
df[,1] # columns
)
)
}
v1 <- c('i1', 'i10', 'i11', 'i12')
v2 <- c(0.11, 0.07, 0.114, 0.67)
v3 <- c(0.07, 0.08, 0.03, 087)
v4 <- c(0.12, 0.13, 0.14, 0.18)
v5 <- c(0.19, 0.21, 0.22, 0.22)
df <- data.frame(cbind(v1, v2, v3, v4, v5))
df
data_matrix(df)
它只是返回错误:
Error in matrix(sapply(tail(t(df), -1), as.numeric), nrow = ncol(df) - :
length of 'dimnames' [1] not equal to array extent