首先,这不是计算两个矩阵之间的欧几里德距离的问题。
假设我有两个矩阵x和y,例如
set.seed(1)
x <- matrix(rnorm(15), ncol=5)
y <- matrix(rnorm(20), ncol=5)
Run Code Online (Sandbox Code Playgroud)
在哪里
> x
[,1] [,2] [,3] [,4] [,5]
[1,] -0.6264538 1.5952808 0.4874291 -0.3053884 -0.6212406
[2,] 0.1836433 0.3295078 0.7383247 1.5117812 -2.2146999
[3,] -0.8356286 -0.8204684 0.5757814 0.3898432 1.1249309
> y
[,1] [,2] [,3] [,4] [,5]
[1,] -0.04493361 0.59390132 -1.98935170 -1.4707524 -0.10278773
[2,] -0.01619026 0.91897737 0.61982575 -0.4781501 0.38767161
[3,] 0.94383621 0.78213630 -0.05612874 0.4179416 -0.05380504
[4,] 0.82122120 0.07456498 -0.15579551 1.3586796 -1.37705956
Run Code Online (Sandbox Code Playgroud)
然后我想获得distmat维度为 3×4 的距离矩阵,其中元素是来自or …
此代码根据参与者和关系的数据帧绘制图表。
library(igraph)
actors <- data.frame(name=c("Alice", "Bob", "Cecil", "David",
"Esmeralda"))
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
"David", "Esmeralda"),
to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"),
friendship=c(4,15,5,2,11,1))
g <- graph_from_data_frame(relations, directed=TRUE, vertices=actors)
plot(g)
Run Code Online (Sandbox Code Playgroud)
结果是:
我想根据 的值更改弧的厚度(而不是长度)relations$friendship。
假设这是我的数据示例
nrow<-4
ncol<-5
m1 <- matrix(rbinom(nrow*ncol,1,.5),nrow,ncol)
m2 <- matrix(rbinom(nrow*ncol,1,.5),nrow,ncol)
m3 <- matrix(rbinom(nrow*ncol,1,.5),nrow,ncol)
Run Code Online (Sandbox Code Playgroud)
我需要依次比较 3 个矩阵。根据这个原则。例如
米1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 1 0 1
[2,] 1 1 1 0 1
[3,] 1 0 0 1 1
[4,] 0 0 0 1 0
Run Code Online (Sandbox Code Playgroud)
平方米
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 0 1
[2,] 0 1 1 0 0
[3,] 1 0 0 0 0
[4,] 0 1 0 1 0
Run Code Online (Sandbox Code Playgroud)
。现在计算矩阵每列中的匹配数。取两个矩阵的第一列
m1 m2
1 1 …Run Code Online (Sandbox Code Playgroud) 有没有diag()类似的方法在 r 中创建不等维对角矩阵?例如:
> diag(rep(1,9), nrow=3)
1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1
Run Code Online (Sandbox Code Playgroud) 我有一个很长的 NumPy 数组,我需要将其组织为“模式”,如下所示:
import numpy as np
# long array:
a = np.array(
[
1.3,
-1.8,
0.3,
11.4,
# ...
]
)
def pattern(x: float):
return np.array(
[
[x, 0, 0],
[0, x, 0],
[0, 0, x],
[+x, +x, +x],
[-x, -x, -x],
]
)
out = np.array([pattern(x) for x in a])
print(out.shape)
Run Code Online (Sandbox Code Playgroud)
(4, 5, 3)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以在out 不显式循环的情况下进行构造a。
有任何想法吗?
假设这个数据框:
country <- c('USA', 'USA', 'USA', 'USA', 'USA', 'UK', 'UK', 'UK', 'Canada')
number <- c(1:9)
df <- data.frame(country, number)
Run Code Online (Sandbox Code Playgroud)
我希望能够仅对国家计数大于 4 或小于 2 的行进行子集化。因此,在这种情况下,它将返回:
country number
USA 1
USA 2
USA 3
USA 4
USA 5
Canada 9
Run Code Online (Sandbox Code Playgroud)
我能够使它与这个一起工作:
totalcounts <- filter(count(df, country), n>4 | n<2) # giving me a df of the country and count
for (i in nrow(totalcounts)){
# code in here that rbinds rows as it matches
}
Run Code Online (Sandbox Code Playgroud)
但我觉得必须有一个更简单的方法。我还没有掌握 sapply 之类的东西,所以我觉得我在这里错过了一些东西。似乎我要走了很长一段路,并且已经有一些东西可以做到这一点。
在此处查看数据框
dt <- structure(list(ID = c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 4, 5, 5,
5, 6, 6, 6, 7, 7, 7), V1 = c("ABC", "ABC", "DEF", "GHI", "GHI",
"GHI", "JKL", "JKL", "DEF", "ABC", "MNO", "GHI", "GHI", "ABC",
"DEF", "DEF", "GHI", "MNO", "MNO", "ABC"), V2 = c("DEF", "MNO",
"MNO", "JKL", "DEF", "ABC", "DEF", "ABC", "ABC", "JKL", "JKL",
"ABC", "DEF", "DEF", "GHI", "MNO", "MNO", "ABC", "JKL", "JKL"
)), row.names = c(NA, -20L), class = c("data.table", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
例如,在 V1 …
这是我对我的项目的一个问题。
假设我有这个数据集。
X1 X2 X3 X4
1 1 2 1 3
2 1 3 2 1
3 1 3 4 2
4 1 1 2 3
5 3 4 3 2
6 2 1 3 4
Run Code Online (Sandbox Code Playgroud)
从这个数据集中,我希望能够指定任何随机行并找出单元格等于 1 的列名。例如,如果我要指定第一行,那么我将得到X1和X3作为我的输出。同样,如果我要指定第二行,那么我将得到X1和X4作为我的输出。如果我要指定第三行,那么我会得到X1我的输出。
我希望这些例子有意义。我在 StackOverflow 上环顾四周,但找不到我要找的东西。如果您能帮我解决这个问题,我将不胜感激。
我在 R 中有以下数据框:
ID = c(rep(1,5),rep(2,3),rep(3,2),rep(4,6));ID
VAR = c("A","A","A","A","B","C","C","D",
"E","E","F","A","B","F","C","F");VAR
CATEGORY = c("ANE","ANE","ANA","ANB","ANE","BOO","BOA","BOO",
"CAT","CAT","DOG","ANE","ANE","DOG","FUT","DOG");CATEGORY
DATA = data.frame(ID,VAR,CATEGORY);DATA
Run Code Online (Sandbox Code Playgroud)
如下表所示:
| ID | VAR | 类别 |
|---|---|---|
| 1 | A | 安尼 |
| 1 | A | 安尼 |
| 1 | A | 全日空航空公司 |
| 1 | A | ANB |
| 1 | 乙 | 安尼 |
| 2 | C | 嘘声 |
| 2 | C | 蟒蛇 |
| 2 | D | 嘘声 |
| 3 | 乙 | 猫 |
| 3 | 乙 | 猫 |
| 4 | F | 狗 |
| 4 | A | 安尼 |
| 4 | 乙 | 安尼 |
| 4 | F | 狗 |
| 4 | C | 氟尿嘧啶 |
| 4 | F | 狗 |
给定 RI 中上述数据帧的理想输出希望是这样的:
| ID | 文本 | 类别 |
|---|---|---|
| 1 | A | 安尼 |
| 2 | C … |
已经提出了类似的问题,但是,没有一个问题需要分割向量名称,所以我提出了一个新问题。
我正在尝试将命名向量转换为 R 中的对称矩阵。我的向量包含矩阵中每个值组合的名称。所以我需要将名称分成各个组成部分。
例如,如果我的数据如下所示:
v <- c(
"x1 x2" = 0.81899860,
"x1 x3" = 0.10764701,
"x2 x3" = 0.03923967,
"x1 x4" = 0.03457240,
"x2 x4" = 0.05954789,
"x3 x4" = 0.15535316,
"x1 x5" = 0.04041266,
"x2 x5" = 0.05421003,
"x3 x5" = 0.09198977,
"x4 x5" = 0.15301872
)
Run Code Online (Sandbox Code Playgroud)
我们可以看到每个名称都是 2 个变量的组合。我试图将其转换为对称矩阵(对角线为零)。为了清楚起见,我想要的输出如下:
x1 x2 x3 x4 x5
x1 0.00000000 0.81899860 0.10764701 0.03457240 0.04041266
x2 0.81899860 0.00000000 0.03923967 0.05954789 0.05421003
x3 0.10764701 0.03923967 0.00000000 0.15535316 0.09198977
x4 0.03457240 0.05954789 0.15535316 0.00000000 …Run Code Online (Sandbox Code Playgroud)