用 R 做数据分析

2023-05-16

用 R 做数据分析

Vol_0:数据的数字特征及相关分析

导入数据

导入文本表格数据

Year  Nationwide  Rural  Urban
1978  184         138    405
1979  207         158    434
1980  236         178    496
1981  262         199    562
1982  284         221    576
1983  311         246    603
1984  354         283    662
1985  437         347    802
...

R 代码:

data <- read.table("./data.txt", header=TRUE)
data

结果:

read_table

导入 CSV 数据

 序号,省市区,11月,1~11月
 1,北京,35.22,499.8
 2,天津,10.41,161.37
 3,河北,17.22,273.29
 4,山西,10.7,134.79
 5,内蒙古,10.29,90.92
 ...

R 代码:

data <- read.csv("./data.csv")

注:这个数据里表头标题有中文、有特殊符号,会被 R 自动处理成:

> cat(names(data))
X.序号 省市区 X11月 X1.11月

可以手动改一下:

data <- data[-1]  # remove "序号" col
names(data) <- c("Province", "X1", "X2")
data

结果:

read_csv

注:后文里会随机使用这两个导入的数据中的一个作示例。

attach

为了方便调用 data.frame 里的各列数据,我们可以:

attach(data)

然后就可以直接用列名引用一列数据了,比如:

print(X1)

不必再通过 data 取索引:

print(data[2])

用完之后,记得 detach:

detach(data)

均值、方差、标准差、变异系数、偏度、峰度

单变量

数据:一个变量,一“列”数据

x <- c(1, 2, 3, 4, 5)

均值:

x ‾ = 1 n ∑ i = 1 n x i \overline x = \frac{1}{n}\sum_{i=1}^nx_i x=n1i=1nxi

mean(x)

方差:
s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) 2 s^2=\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline x)^2 s2=n11i=1n(xix)2

var(x)

标准差:
s = s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) 2 s = \sqrt{s^2}=\sqrt{\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline x)^2} s=s2 =n11i=1n(xix)2

sd(x)

变异系数:
C V = s x ‾ CV = \frac{s}{\overline x} CV=xs

cv <- function(x) sd(x)/mean(x)

cv(x)

注:书上是百分数的 C V = 100 × s x ‾ ( % ) CV = 100 \times \frac{s}{\overline x} (\%) CV=100×xs(%).

偏度:
g 1 = 1 ( n − 1 ) ( n − 2 ) 1 s 3 ∑ i = 1 n ( x i − x ‾ ) 3 g_1=\frac{1}{(n-1)(n-2)}\frac{1}{s^3}\sum_{i=1}^n(x_i-\overline x)^3 g1=(n1)(n2)1s31i=1n(xix)3

g1 <- function(x) {
    n <- length(x)
    A <- n / ((n-1) * (n-2))
    B <- 1 / sd(x)^3
    S <- sum((x - mean(x))^3)
    A * B * S
}

g1(x)

峰度:
g 2 = n ( n + 1 ) ( n − 1 ) ( n − 2 ) ( n − 3 ) 1 s 4 ∑ i = 1 n ( x i − x ‾ ) 4 − 3 ( n − 1 ) 2 ( n − 2 ) ( n − 3 ) g_2 = \frac{n(n+1)}{(n-1)(n-2)(n-3)}\frac{1}{s^4}\sum_{i=1}^n(x_i-\overline x)^4\\-\frac{3(n-1)^2}{(n-2)(n-3)} g2=(n1)(n2)(n3)n(n+1)s41i=1n(xix)4(n2)(n3)3(n1)2

g2 <- function(x) {  # 峰度
    n <- length(x)
    A <- (n * (n+1)) / ((n-1) * (n-2) * (n-3))
    B <- 1 / sd(x)^4
    S <- sum((x - mean(x))^4)
    C <- (3 * (n-1)^2) / ((n-2) * (n-3))
    A * B * S - C
}

g2(x)

作用于 data.frame

我们导入的数据都是 data.frame,可以单独取出一列来,就和上面的 x 一样了:

x <- data[[2]]  # 取出 data 的第二列数据

mean(x)

但每一列都都调用一次也很烦,所以这里还有一种方法,一次性把 mean 或者其他函数作用于 data.frame 的各列(这里用前文第一个表格导入进来的 data 做例子):

apply(data[-1], MARGIN=2, FUN=mean)

结果:

apply

说明:

  • 这里 data 的第一列是字符的,求均值没有意义: 用 data[-N] 去掉第 N 列(R 从 1 开始索引)
  • 第二个参数 MARGIN=2 就是逐列处理
  • 第三个 FUN 是要作用的函数,这里是求均值。方差什么的也是一样的,把这个参数换成 FUN=var 啥的就行了。

all in one

为了方便,我们可以把算这几个东西的过程封装在一起:

describes <- function(df) {
    # TODO(CDFMLR): 优化重复计算
    cv <- function(x) sd(x)/mean(x)  # 变异系数

    g1 <- function(x) {  # 偏度
        n <- length(x)
        A <- n / ((n-1) * (n-2))
        B <- 1 / sd(x)^3
        S <- sum((x - mean(x))^3)
        A * B * S
    }

    g2 <- function(x) {  # 峰度
        n <- length(x)
        A <- (n * (n+1)) / ((n-1) * (n-2) * (n-3))
        B <- 1 / sd(x)^4
        S <- sum((x - mean(x))^4)
        C <- (3 * (n-1)^2) / ((n-2) * (n-3))
        A * B * S - C
    }
    
    itm <- matrix(c("均值", "方差", "标准差", "变异系数", "偏度", "峰度"), 6, 1)
    res <- apply(df, 2, 
                 function(x) c(mean(x), var(x), sd(x), cv(x), g1(x), g2(x)))
    
    cbind(itm, res)
}

传入参数是一个 data.frame,这个函数会求出各列的均值、方差等,(例如作用于前文导入的 csv 数据):

describes(data[-1])

结果:

apply_result

一次性全出来了,这样就很方便。

调包

当然,这些操作都有第三方包有封装实现,比如这个:

  • psych

安装这个包(直接在 R 里面写):

install.packages("psych")

导包:

library(psych)

然后就可以用这个包里的东西了。

这个包提供了前面最难写的峰度偏度:

# g1、g2 是用 type=2: see help(skew)
g1 <- function(x) skew(x, type=2)
g2 <- function(x) kurtosi(x, type=2)  # help(kurtosi)

这个包还提供了一个 describe 函数可以一次性求出前面大多数值(类似于我们手写的 describes):

describe(data[-1], type=2)

结果:

psych_describe

中位数、上下四分位数、四分位极差

可以先求五数:最小值、下四分位数、中位数、上四分位数、最大值

fn <- apply(data[-1], 2, fivenum)
fn

fivenum

四分位极差:

R1 <- function(Q3, Q1) Q3 - Q1

R1(Q3=fn[4,], Q1=fn[2,])

[Math Time]

p 分位数:

M p = { x ( [ n p ] + 1 ) , n p  不是整数 1 2 ( x ( n p ) + x ( n p + 1 ) ) , n p  是整数 M_p=\left\{\begin{array}{ll} x_{([np]+1)} ,& np \textrm{ 不是整数}\\ \frac{1}{2}(x_{(np)}+x_{(np+1)}) ,& np \textrm{ 是整数}\\ \end{array}\right. Mp={x([np]+1),21(x(np)+x(np+1)),np 不是整数np 是整数
上下四分位数:
Q 3 = M 0.75 , Q 1 = M 0.25 Q_3=M_{0.75}, \qquad Q_1=M_{0.25} Q3=M0.75,Q1=M0.25
四分位极差:
R 1 = Q 3 − Q 1 R_1=Q_3-Q_1 R1=Q3Q1

注:R 求分位数用 quantile,详见 help(quantile)

有了上下四分位数、四分位极差,可以求个异常数据:

定义:下、上截断点:

Q 1 − 1.5 R 1 , Q 3 + 1.5 R 1 Q_1-1.5R_1,\qquad Q_3+1.5R_1 Q11.5R1,Q3+1.5R1

大于「上截断」、小于「下阶段」的数据视为异常值

abnormal <- function(x) {
    fn <- fivenum(x);
    Q1 <- fn[2];  Q3 <- fn[4];
    
    R1 <- Q3 - Q1
    
    QD <- Q1 - 1.5 * R1
    QU <- Q3 + 1.5 * R1
    
    x[(x < QD) | (x > QU)]
}
apply(data[-1], 2, abnormal)
# 若结果为空则没有异常值

数据分布图

茎叶图

stem(Nationwide)

stem

直方图

最简单的是直接用 hist(x),但我们可以画的好看一点。

封装:

histogram <- function(x, xname="x") {
    hist(x, prob=TRUE, main=paste("Histogram of" , xname))
    lines(density(x))
    rug(x) # show the actual data points
}

调用:

histogram(X1, "X1")

结果:

hist

经验分布函数图

封装:

plot_ecdf <- function(x, xname="x") {
    plot(ecdf(x), do.points=FALSE, verticals=TRUE, main=paste("ecdf(" , xname, ")"))
    
    xs <- seq(min(x), max(x), 1/sqrt(length(x)))
    lines(xs, pnorm(xs, mean=mean(x), sd=sd(x)), lty=3, col="red")
}

注意 xs 这里我选择用 1 n \frac{1}{\sqrt{n}} n 1 的密度,这个值比较适合我的数据(画出来不过稀也不太密),这个可以随便改。

调用:

plot_ecdf(X1, "X1")

结果:

ecdf

正态 Q-Q 图

qqnorm(X1)

qqnorm

Pearson 与 Spearman 相关系数

Pearson 相关系数

二维总体: ( X , Y ) T (X,Y)^T (X,Y)T

观测数据: ( x 1 , y 1 ) T , ( x 2 , y 2 ) T , ⋯   , ( x n , y n ) T (x_1,y_1)^T,(x_2,y_2)^T,\cdots,(x_n,y_n)^T (x1,y1)T,(x2,y2)T,,(xn,yn)T

记: x ‾ = 1 n ∑ i = 1 n x i , y ‾ = 1 n ∑ i = 1 n y i \overline x=\frac{1}{n}\sum_{i=1}^nx_i,\quad \overline y=\frac{1}{n}\sum_{i=1}^ny_i x=n1i=1nxi,y=n1i=1nyi

X , Y X, Y X,Y 的观测数据的方差:
s x x = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) 2 s y y = 1 n − 1 ∑ i = 1 n ( y i − y ‾ ) 2 s_{xx}=\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline x)^2 \quad s_{yy}=\frac{1}{n-1}\sum_{i=1}^n(y_i-\overline y)^2 sxx=n11i=1n(xix)2syy=n11i=1n(yiy)2
X , Y X,Y X,Y 的观测数据的协方差:
s x y = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) 2 ( y i − y ‾ ) 2 s_{xy}=\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline x)^2(y_i-\overline y)^2 sxy=n11i=1n(xix)2(yiy)2
(注:协方差矩阵 S = [ s x x s x y s y x s y y ] S=\left[\begin{matrix}s_{xx} & s_{xy} \\ s_{yx} & s_{yy}\end{matrix}\right] S=[sxxsyxsxysyy],其中 s y x = s x y s_{yx}=s_{xy} syx=sxy

Pearson 相关系数:
r x y = s x y s x x s y y r_{xy}=\frac{s_{xy}}{\sqrt{s_{xx}}\sqrt{s_{yy}}} rxy=sxx syy sxy

这个值 ∣ r x y ∣ ≤ 1 |r_{xy}|\le1 rxy1,衡量 X 和 Y 的线性相关程度:

  • r x y → 1 r_{xy}\rightarrow 1 rxy1 正相关
  • r x y → 0 r_{xy}\rightarrow 0 rxy0 不线性相关
  • r x y → − 1 r_{xy}\rightarrow -1 rxy1 负相关

用 R 来算相关系数,用 cor(x, y, method="pearson") 这个函数会直接求出 r x y r_{xy} rxy 值。也可以用下面这个函数,会输出更多的信息:

cor.test(X1, X2, method="pearson")

输出:( cor = r x y \textrm{cor}=r_{xy} cor=rxy)

pearson

【Math Time】关于上面输出的假设检验:

设二维总体 ( X , Y ) T (X,Y)^T (X,Y)T 的分布函数为 F ( x , y ) F(x,y) F(x,y)

总体的相关系数 ρ X Y = C o v ( X , Y ) V a r ( X ) V a r ( Y ) \rho_{_{XY}}=\frac{\mathrm{Cov}(X,Y)}{\sqrt{\mathrm{Var}(X)}\sqrt{\mathrm{Var}(Y)}} ρXY=Var(X) Var(Y) Cov(X,Y)

n n n 充分大时,有 ρ X Y ≈ r x y \rho_{_{XY}} \approx r_{xy} ρXYrxy

现在的问题是:

  • 对任意观测数据总可以求到 r x y r_{xy} rxy,而且求出来一般不为0
  • 而如果总体的 X X X Y Y Y 是不相关的( ρ X Y = 0 \rho_{XY}=0 ρXY=0):这时用 r x y r_{xy} rxy 来度量 X X X Y Y Y 的关联性就没有意义了。

所以要做个假设检验:
H 0 : ρ X Y = 0 ↔ H 1 : ρ X Y ≠ 0 H_0:\rho_{_{XY}}=0 \quad \leftrightarrow \quad H_1:\rho_{_{XY}}\ne0 H0:ρXY=0H1:ρXY=0
若总体时二维正态的,则 H 0 H_0 H0 为真时,统计量
t = T x y n − 2 1 − r x y 2 ∼ t ( n − 2 ) t=\frac{T_{xy}\sqrt{n-2}}{\sqrt{1-r_{xy}^2}} \sim t(n-2) t=1rxy2 Txyn2 t(n2)
将观测数据算得的 t t t 值记为 t 0 t_0 t0 则检验 p p p 值:
p = P H 0 ( ∣ t ∣ > ∣ t 0 ∣ ) = P ( ∣ t ( n − 2 ) ∣ ≥ ∣ t 0 ∣ ) p=P_{H_0}(|t|>|t_0|)=P(|t(n-2)|\ge|t_0|) p=PH0(t>t0)=P(t(n2)t0)
给定显著水平 α \alpha α p < α p<\alpha p<α 时拒绝 H 0 H_0 H0,认为 X , Y X,Y X,Y 相关,可以用 r x y r_{xy} rxy 衡量相关程度。

Spearman 相关系数

Spearman 是秩相关系数

样本秩:把观测值 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn 从小到大排序, x i x_i xi 排在第几个则其秩 R i R_i Ri 就是多少。

e.g.
x i : 7 − 3 − 1 5 R i : 4 1 2 3 \begin{array}{r} x_i: & 7 & -3 & -1 & 5 \\ R_i: & 4 & 1 & 2 & 3 \end{array} xi:Ri:74311253

记:

  • x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn 的秩分别为: R 1 , R 2 , ⋯   , R n R_1,R_2,\cdots,R_n R1,R2,,Rn
  • R ‾ = 1 n ∑ i = 1 n R i = 1 n ∑ i = 1 n i = n + 1 2 \overline R=\frac{1}{n}\sum_{i=1}^nR_i=\frac{1}{n}\sum_{i=1}^n i=\frac{n+1}{2} R=n1i=1nRi=n1i=1ni=2n+1
  • y 1 , y 2 , ⋯   , y n y_1,y_2,\cdots,y_n y1,y2,,yn 的秩分别为: S 1 , S 2 , ⋯   , S n S_1,S_2,\cdots,S_n S1,S2,,Sn
  • S ‾ = 1 n ∑ i = 1 n S i = n + 1 2 \overline S=\frac{1}{n}\sum_{i=1}^nS_i=\frac{n+1}{2} S=n1i=1nSi=2n+1

则定义 Spearman 相关系数:
q x y = ∑ i = 1 n ( R i − R ‾ ) ( S i − S ‾ ) ∑ i = 1 n ( R i − R ‾ ) 2 ∑ i = 1 n ( S i − S ‾ ) 2 \begin{array}{l} q_{xy} &=& \frac{\sum_{i=1}^n(R_i-\overline R)(S_i-\overline S)}{\sqrt{\sum_{i=1}^n(R_i-\overline R)^2}\sqrt{\sum_{i=1}^n(S_i-\overline S)^2}} \end{array} qxy=i=1n(RiR)2 i=1n(SiS)2 i=1n(RiR)(SiS)
用 R 来计算(输出里 rho = q x y \textrm{rho}=q_{xy} rho=qxy):

cor.test(X1, X2, method="spearman")

spearman

还是一样的,有一个假设检验:
H 0 : ρ X Y = 0 ↔ H 1 : ρ X Y ≠ 0 H_0:\rho_{_{XY}}=0 \quad \leftrightarrow \quad H_1:\rho_{_{XY}}\ne0 H0:ρXY=0H1:ρXY=0


【EOF】

暂时就这些了。最近忙,后面如果有时间可能还会写回归分析、方差分析…这些完整一套的。

CDFMLR 2021.06.07


【P.S. 2021.07.15】 真的没时间写啊,感觉又是未完不必待续了。

如果有人想看后续可以吱一声

其实如果需要的话,整本数据分析的各种代码基本在 github.com/cdfmlr/daex 里都有写,可以参考一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 R 做数据分析 的相关文章

  • FPGA USB host原型验证流程及调试手段

    host mode plug in a device for test super speed device usb3 0 usb storage high speed device usb2 0 usb storage full spee
  • USB2.0 UTMI+接口

    1 UTMI The UTMI standard contains progressive levels of technology support because the complexity requirements for devic
  • cadence usb linux配置

    1 kernel config 2 dts
  • USB3.0 host xHCI驱动

    xHCI驱动在usb host中 主要初始化xHCI xHCI作为usb nbsp host部分的驱动 1 nbsp xhci driver与device的匹配 usb host xhci plat c static struct plat
  • windows PCIe 工具: TeleScan

    TeleScan PE for Windows 用户可以通过TeleScan PE来扫描系统中的PCI PCIe设备 xff0c 并提供了读写其配置空间中的寄存器的功能 download Teledyne LeCroy PCI Expres
  • intel 82574 1000M pcie 网卡 kernel driver

    0 kernel config Device Drivers gt Network device support gt Ethernet driver support gt Intel devices lt gt Intel R PRO 1
  • Windows NFS server:Winnfsd

    1 Winnfsd GitHub winnfsd winnfsd Usage WinNFSd exe id lt uid gt lt gid gt log on off pathFile lt file gt addr lt ip gt e
  • windows dhcp server

    1 tool Open DHCP Server Open Source Freeware Windows Linux MultiSubnet MultiDomain DHCP Server supports every Industry S
  • uboot环境变量保存到EMMC

    1 cmd 命令行可以用setenv printenv saveenv uboot u boot 2020 04 cmd nvedit c setenv gt do env set gt do env set gt hsearch r en
  • 安装VScode配置c/c++环境出现问题提示#include errors detected. Please update your includePath......解决办法

    文章目录 1 vscode下载安装以及c c 43 43 插件安装 2 MinGW安装3 配置环境变量4 配置几个json文件 1 vscode下载安装以及c c 43 43 插件安装 VScode下载地址 2 MinGW安装 官网下载地址
  • linux支持ipv6

    1 kernel config Networking support gt Networking options gt lt gt The IPv6 protocol gt 2 test 2 1 proc net if inet6 查看 p
  • 以太网 网线分类

    1 双绞线分类 一类线 xff1a 主要用于传输语音 xff08 一类标准主要用于八十年代初之前的电话线缆 xff09 xff0c 不同于数据传输 二类线 xff1a 传输频率为1MHZ xff0c 用于语音传输和最高传输速率4Mbps的数
  • linux pcie RC 框架

    1 linux pcie rc framework Following is a brief explanation of layers shown in the diagram There are different drivers fo
  • you-get下载bilibili视频

    you get是一个命令行工具 xff0c 可以从网络上下载视频 音频 图片等资源 https codechina csdn net mirrors soimort you get utm source 61 csdn github acc
  • gpg: 无法检查签名:没有公钥

    repo error 34 git 34 failed with exit status 1 cmd 39 git 39 39 tag 39 39 v 39 39 v1 12 16 39 stdout gt gt object 666d53
  • ARM指令中怎么判断合法立即数的方法(转载)

    在ARM汇编的数据处理指令中经常会使用到常数 xff0c 而ARM汇编中规定使用的常数必 须是立即数 ARM立即数的是由一个8位的常数循环右移偶数位得到的 xff0c 其中循环右移 的位数由一个4位2进制的两倍表示 xff0c 公式如下 i
  • 选择排序算法

    概要 本章介绍排序算法中的选择排序 目录 1 选择排序介绍 2 选择排序图文说明 3 选择排序的时间复杂度和稳定性 4 选择排序实现 4 1 选择排序C实现 4 2 选择排序C 43 43 实现 4 3 选择排序Java实现 转载请注明出处
  • 字符编码详解

    相信很多程序员在面对 字符编码 这个问题时 xff0c 都曾困扰过 xff0c 甚至头疼不已 接着之前两篇博客 xff08 二进制文件和文本文件 文本文件换行符 xff09 xff0c 本文将对 字符编码 做一个全面而细致的剖析 xff0c
  • CentOS + Mongodb 搭建NodeBB [转载翻译]

    原文 xff1a https www kancloud cn a632079 nodebb cn 372108 服务器选用 64 位 CentOS xff0c MongoDB 现在只有64位版本 CentOS amp MongoDB 一 准
  • 国家气象局提供的天气预报接口(完整Json接口)

    国家气象局提供的天气预报接口主要有三个 xff0c 分别是 xff1a http www weather com cn data sk 101010100 html http www weather com cn data cityinfo

随机推荐

  • 数据结构题集(c语言版)严蔚敏答案pdf

    前言 xff1a 最近在学习数据结构 xff0c 在做习题的时候找答案费了一番力气 xff0c 好不容易找到了 xff0c 分享出来 xff0c 希望想学的人找得没那么累 图书目录 xff1a 第一篇 习题与学习指导 第0章 本篇提要与作业
  • ios swift uitextview如何应对键盘的遮挡

    参考http stackoverflow com questions 36405752 keyboard to move the view only if the textfield is hidden 1 继承 UITextViewDel
  • Android设备唯一标识符ID

    一 获取各种单一的设备标识方式 1 DEVICE ID 概念 xff1a 是区别移动设备的标志 xff0c 储存在移动设备中 xff0c 可用于监控被窃或无效的移动设备 优点 xff1a 根据不同的手机设备返回IMEI xff0c MEID
  • 关于Uview ui框架的使用

    uview源码 api 按照使用场景自定义修改 如果想要使用 uview的 Upload 组件的 手动上传功能 xff0c 突然发现最近的1 x版本不能用了 xff0c 所以 我想手动diy一下 Upload 部分的源码 xff0c 本人使
  • 关于node-sass装不上,项目运行不了把我搞崩溃一记

    由于之前手贱 xff0c 用电脑管家的软件管理 更新了一下nodejs的最新稳定版本 xff0c 好家伙 xff0c 最近一直在开发uniapp xff0c 因为是hbuild自带node sass的插件版本 xff0c 所以一直也没有影响
  • OpenGL---VS2010环境搭建

    参看 xff1a http www cppblog com doing5552 archive 2009 01 08 71532 html 1 安装GLUT工具包 http www opengl org resources librarie
  • C++两个类互相引用的解决方法

    问题描述 xff1a c 43 43 在使用过程中遇到两个类需要相互包含引用的问题 解决办法 xff1a 两个类的头文件之中 xff0c 选一个包含另一个类的头文件 xff0c 另一个头文件中采用class xff1b 的申明形式 xff0
  • VTK 3D图像显示

    目的 根据不同需求 xff0c 医学3D图像的显示方式有多种 xff0c 本篇先简单罗列3D图像的几种显示模式 xff0c 后续再进行详细补充 1 剂量模体和二维数据 体模原图 xff08 网络截图 xff09 xff1a 体模二维X射线影
  • 原版win7全新安装后无法通过windows update安装更新的解决办法.2023-03-07

    首先要确保网络畅通 系统时间设置正确 系统没有被病毒流氓程序等破坏 是一个正常完整的初始安装的系统 方法一 1 安装 Windows 更新客户端 kb3138612 kb3138612 Microsoft Update Catalog 2
  • xmind 8 pro Mac破解版(思维导图) 附xmind 8 序列号

    链接 https pan baidu com s 1tTKYuqCjGo WC2ns6tN54w 密码 1b1w 转载地址 小伙伴们XMind 8 pro Mac破解版 思维导图 最新版本v3 7 8中文破解版上线了 xff0c 本次的XM
  • 操作系统系列笔记(五) - 同步互斥, 信号量和管程

    同步互斥 背景 并发进程在多个进程间有资源共享 导致执行过程是不确定性和不可重现的 程序错误可能是间歇性发生 原子操作 是指一次不存在任何中断或失败的操作 操作系统需要利用同步机制 在并发执行的同时保证一些操作是原子操作 几个状态 互斥 一
  • compilation terminated. The terminal process terminated with exit code: 1头文件包含错误解决办法

    错误描述 xff1a d coding clanguage datastruct chapterone mian1 cpp 1 46 fatal error c1 h No such file or directory include 34
  • 实践支持HTTPS SSL的七牛云存储CDN

    最近 xff0c 听说七牛云存储CDN这货支持HTTPS SSL Godaddy SSL证书 xff0c 试用了一下 xff0c 简直发现了新大陆 刚开始设置好以后 xff0c 发现HTTPS下的网页并没有采用七牛的服务 xff0c 只是H
  • 超详细,多图,PVE安装以及简单设置教程(个人记录)

    前言 写这个的目的是因为本人健忘所以做个记录以便日后再折腾时查阅 本人笔拙如有选词 xff0c 错字 xff0c 语法 xff0c 标点错误请忽视 xff0c 大概率知道了也不会修改 xff0c 本人能看懂就好 内容仅适用于本人的使用环境
  • Visual Studio 编译时moc 某些头文件找不到,编译不过,解决办法

    Visual Studio 编译时moc 某些头文件找不到 xff0c 编译不过 xff0c 解决办法 主要是不同的VS版本提交时存在的差异造成的 需要把编译时moc不过的头文件先移除掉 xff0c 然后再添加回来 xff0c 再编译就能编
  • UITableViewController使用

    列表视图控制器 xff0c 用起来很方便 xff0c 不仅可以实现分组列表 xff0c 连tem都有很多定义好的样式 xff0c 使用时基本上不需要有大的自定义的部分 xff0c 这里做一些简单的尝试 1 新建MyTableViewCont
  • TQ2440外接GPIO蜂鸣器驱动程序

    本文通过TQ2440开发板上可外接的GPIO口GPG14连接蜂鸣器 xff0c 通过控制GPG14引脚的高低电平的输出和高低电平输出之间的时间间隔来使蜂鸣器发出不同的声音 1 打开S3C2440的底板原理图找到GPIO xff0c 如下图所
  • Ubuntu下QT静态编译教程

    1 安装Ubuntu系统 xff0c 然后 root 账户登录 xff0c 不然可能会有权限问题 xff0c 避免麻烦 2 打开终端 xff0c 安装必要环境 xff1a 注 xff1a 如安装时 xff0c 遇到暂停需要输入y时 xff0
  • 用 GitHub Actions 自动打包发布 Python 项目

    用 GitHub Actions 自动打包发布 Python 项目 文章目录 用 GitHub Actions 自动打包发布 Python 项目前言在 GitHub 上保存 token创建 workflow定义工作流程的工作环境签出项目 x
  • 用 R 做数据分析

    用 R 做数据分析 Vol 0 xff1a 数据的数字特征及相关分析 导入数据 导入文本表格数据 Year Nationwide Rural Urban 1978 184 138 405 1979 207 158 434 1980 236