R语言基础--文件读写

news2024/11/15 11:40:46

From生物技能树(R第五节)

文章目录

  • 一、文件读写
    • 1.注意用project管理工作目录
    • 2、文件读取
      • 1、读取.txt文件
      • 2、读取.csv文件
      • 注意:数据框不允许重复的行名
    • 3.数据框的导出
    • 4.读取文件的其他方式(用于读取/导出文件的R包)--经验
      • 1.base
      • 2.readr
      • 3.data.table
      • 4.rio:读取xlsx比较推荐!
    • 5、练习
    • 6.总结
  • 二、掉包
  • 三、R语言作图:分三类
    • 1.常见R包和函数
    • 2._plots.R
      • 1.基础包-绘图函数
      • 2.ggplot2与ggpubr
    • 3.-ggplot2.R
    • ggplot2语法:
      • 1.ggplot2:绘图、颜色、形状
      • 2.入门级绘图模板:作图数据,横纵坐标
      • 3.属性设置(颜色、大小、透明度、点的形状,线型等)
        • 1.手动设置
        • 2.映射:按照数据框的某一列来定义图的某个属性
        • 3.映射 vs 手动设置
        • 4.能不能自行指定映射的具体颜色?
        • 5.区分color和fill两个属性
          • 1.空心形状和实心形状都用color设置颜色
          • 2.既有边框又有内心的,才需要color和fill两个参数
    • 4.拼图
    • 5.导出
  • 四、练习1(5_exercise.R)
    • 练习2


一、文件读写

1.注意用project管理工作目录

不然就会报错
在这里插入图片描述
在这里插入图片描述

2、文件读取

#read.csv() 函数是用来读取CSV(逗号分隔值)文件并将其转换为数据框(data frame)的函数。CSV文件是一种常见的数据存储格式,广泛应用于数据交换和数据分析。

例如,如果你有一个名为 data.csv 的文件,它位于当前工作目录中,并且第一行包含列名,你可以使用以下命令读取这个文件:

my_data <- read.csv("data.csv")
这将创建一个名为 my_data 的数据框,其中包含了CSV文件中的数据。

如果CSV文件使用分号作为字段分隔符,你可以指定 sep 参数:

my_data <- read.csv("data.csv", sep = ";")

#通常用于读取txt格式,read.table() 是R语言中的一个基础函数,用于读取文本文件并将其转换为数据框(data frame)。这个函数非常灵活,可以处理多种不同的数据格式,不仅仅是表格数据。它通常用于读取那些没有内置读取函数的文本文件格式。
read.table() 

#read.delim()也可以读取txt文件,不常用但是读txt文件时比read.table不容易出错
#两者都属于read.系列函数
?read.table()两者的帮助文档都在一起,都属于read系列函数,参数通用,默认值不同函数有所不同,如header列名参数,seq分隔符参数等。

在这里插入图片描述

如果想知道文件读入后是什么数据结构,应该class(?)
A.test
B.“ex3.csv”
答案:应该选A,因为"ex3.csv"是个文件名,文件名加双引号,不是变量
文件和变量的区别,从工作目录下可以找到"ex3.csv"这个文件名,而关掉R找不到test,test是r语言里的数据
在这里插入图片描述

1、读取.txt文件

#查看,发现问题,读取的时候第一行变成了列名,列名不属于表格的正式内容,
ex1 <- read.table("ex1.txt")
#因为数据框的一列属于向量,而一列只能有一种类型的向量,字符的包容性更大,这样的话剩下的数值型都会被强制转换为字符型,因为对于数据框来说一列只能有一种数据类型
> ex1[2,4]
[1] "45351"
#遇到报错,查看帮助文档,寻找解决方案,把列名归位,read.table中header的默认值为F,意思是文件内不包括列名,如果包括的话要改为T
x1 <- read.table("ex1.txt",header = TRUE)

在这里插入图片描述

2、读取.csv文件

#文件查看,和excel查看相比,因为R语言列名不允许出现特殊字符,列名中的-变成了.,因为列名中有特殊字符,被强制转换了,行名变成了第一列,没有变成行名,上面多了一个X,查看帮助文档,
> #2.读取ex2.csv
> ex2 <- read.csv("ex2.csv")
> View(ex2)
> ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F)
> 
> row.names = 1的作用是把第一列设置成行名
> check.names = F意思是不检查列名中的特殊字符

在这里插入图片描述

注意:数据框不允许重复的行名

如有重复的话会报错,解决方法:需要先不按行名读进来,去重复,然后再row.names=rod$A

rod = read.csv("rod.csv")

在这里插入图片描述

3.数据框的导出

将数据框导出为一个表格文件

write.csv(ex2,file = "example.csv")  #用的多,记得写后缀.csv
write.table(ex2,file = "example.txt") #用的少,记得写后缀.txt

在这里插入图片描述

4.读取文件的其他方式(用于读取/导出文件的R包)–经验

用于读写文件的r包有很多,read.table、read.csv等都属于base,不用加载任何R包即可使用,有一些其他的R包也可以用于读写文件,参数更智能

1.base

2.readr

大神写的,打开会比base快,但不推荐用

3.data.table

> library(data.table)
> ex1 = fread("ex1.txt")
> View(ex1)
> class(ex1)
[1] "data.table" "data.frame"
#不用设置header=T

多了一个属性叫data.table,是一种特殊的数据框,不过不常用,因此可去除data.table这种属性


> ex1 = fread("ex1.txt",data.table = F)
> class(ex1)
[1] "data.frame"
#加上后面的参数之后data.table属性就消失了
ex2 = fread("ex2.csv",data.table = F)
#缺点:fread没有设置行名的参数,因为大神觉得行名是个不应该存在的东西…………
library(tibble)
ex2 = column_to_rownames(ex2,"V1")
#又想用fread,又想设置行名,于是只能用另一个函数来设置行名,在tibble的R包里,函数column_to_rownames()可以设置行名,即第一列设置为行名

4.rio:读取xlsx比较推荐!

#一个函数支持读取很多格式,见帮助文档,#如果没有特殊情况,excel文件推荐用import()来读取

library(rio)
ex1 = import("ex1.txt")

#如果excel文件含有多个工作博,会用到函数import_list,这种场景用的较少,用时现学即可

#一个函数支持导出很多格式,见帮助文档

export(ex1,file = "ex1.xlsx")

在这里插入图片描述

5、练习

练习5-1:
1.读取GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz(已保存在工作目录)
注 :gz是压缩格式,可以不用解压,直接读取

#加上check.name = F,是因为有特殊字符,经常加着
x1 = read.delim("GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz",check.name = F)
x1 = data.table::fread("GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz",data.table = F)
x3 = rio::import("GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz")

2.加载y.Rdata(已保存在工作目录),求gene1列的平均值

如果你看到 y.Rdata,这通常意味着这是一个包含了至少一个对象的文件,该对象的名称是 y。这个文件可以通过R语言中的 load() 函数来读取。以下是如何加载 .RData 文件的基本命令:

> load("y.Rdata")
> mean(y$gene1)
Error in h(simpleError(msg, call)) : 
 error in evaluating the argument 'x' in selecting a method for function 'mean': $ operator is invalid for atomic vectors
 # $不让用,是因为它不是一个数据框
> class(y)
[1] "matrix" "array" 
> mean(y[,1])
> #是个矩阵
[1] NA
Warning message:
In mean.default(y[, 1]) : argument is not numeric or logical: returning NA
> y[,1]
GSM1 GSM2 GSM3 GSM4 GSM5 GSM6 
"40" "20" "51" "46" "38" "49" 
#取出的是向量,可转换格式
> mean(as.numeric(y[,1]))
[1] 40.66667
> #why?
> y[,1] = as.numeric(y[,1])
> y[,1]
GSM1 GSM2 GSM3 GSM4 GSM5 GSM6 
"40" "20" "51" "46" "38" "49" 
#没改成功是因为y是一个矩阵,没办法单独改一列的内容,一个矩阵里有两种数据类型的时候还是会把他兼容回去,

注意:转换数据类型的前提条件是数据框里只能有一种数据类型,需要重视数据类型,数据结构

load("y.Rdata")
mean(as.numeric(y[,"gene1"]))
## [1] 40.66667

一定要经常检查数据

6.总结

在这里插入图片描述
在这里插入图片描述

header 管行名,check.names管列名,row.name管要不要检查列名

在R语言中,header 是一个参数,经常出现在读取数据文件的函数中,如 read.csv() 或 read.table()。这个参数决定了函数在读取文件时是否应该将文件的第一行作为列名。

以下是一些使用 header 参数的常见场景:

read.csv():读取CSV文件时,如果你设置 header = TRUE,R会将文件的第一行作为列名。默认情况下,read.csv() 函数的 header 参数就是 TRUE。

my_data <- read.csv("data.csv", header = TRUE)
如果CSV文件的第一行不是列名,你应该将 header 设置为 FALSE。

read.table():在读取文本文件时,read.table() 函数的 header 参数默认为 FALSE。如果你想让R将第一行作为列名,你需要将其设置为 TRUE。

my_data <- read.table("data.txt", header = TRUE)
read.delim() 和 read.delim2():这些函数是 read.table() 的变体,它们默认将第一行视为列名,即 header = TRUE
在R语言中,check.names 是 read.table()、read.csv() 和其他相关函数的一个参数,用于控制是否检查并自动修改数据框中的列名以确保它们是合法的R变量名。

默认情况下,read.table() 和 read.csv() 函数会将列名作为字符型读取,而不会检查它们是否是合法的R变量名。如果你希望函数自动将列名修改为合法的变量名,可以设置 check.names = TRUE。
在R语言中,rownames() 函数用于获取或设置数据框(data frame)、矩阵(matrix)或其他列表(list)对象的行名(row names)。

二、掉包

仿照:语雀上”小洁怎么会分身“
添加链接描述

#install.packages("scatterplot3d")
library(scatterplot3d)
my_color = c("#66C2A5FF", "#FC8D62FF", "#8DA0CBFF")

colors = my_color[as.numeric(iris$Species)]
#因子转换为数值是可以转换的

p1 = scatterplot3d(iris[,1:3],color = colors,main="iris",pch = 16)

legend(p1$xyz.convert(8.5, 2.5, 5), legend = levels(iris$Species),
      col = my_color, pch = 16)

#如果套用自己的数据

只需要更改iris$Species,代表分类的那一列,以及iris[,1:3]带入自己的数据
#install.packages("scatterplot3d")
library(scatterplot3d)
my_color = c("#66C2A5FF", "#FC8D62FF", "#8DA0CBFF","#fe4632")

dat = data.frame(a = rnorm(100),
                 b = rnorm(100),
                 c = rnorm(100),
                 d = as.factor(rep(c("m","n","o","p"),each = 25)))

colors = my_color[as.numeric(dat$d)]

p1 = scatterplot3d(dat[,1:3],color = colors,main="zyy",pch = 16)

legend(p1$xyz.convert(5, 2, 2), legend = levels(iris$Species),
       col = my_color, pch = 16)

在这里插入图片描述

三、R语言作图:分三类

展示自己的数据

1.常见R包和函数

在这里插入图片描述

2._plots.R

1.基础包-绘图函数

高级:画一整张图,低级:修改图中某个元素
在这里插入图片描述

plot(iris[,1],iris[,3],col = iris[,5]) 
text(6.5,4, labels = 'hello')

在这里插入图片描述

2.ggplot2与ggpubr

ggplot2 中坚力量,语法有个性,更加强大

library(ggplot2)
## Warning: 程辑包'ggplot2'是用R版本4.3.2 来建造的
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))

在这里插入图片描述

ggpubr 新手友好型,在ggplot2的基础上进行了简化和美化,没有灵魂,可扩展性没有那么强

library(ggpubr)
## Warning: 程辑包'ggpubr'是用R版本4.3.2 来建造的
ggscatter(iris,
          x="Sepal.Length",
          y="Petal.Length",
          color="Species")

在这里插入图片描述

3.-ggplot2.R

ggplot2语法:

在这里插入图片描述

1.ggplot2:绘图、颜色、形状

library(ggplot2)

2.入门级绘图模板:作图数据,横纵坐标

在这里插入图片描述

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))
                          

数据是iris,geom_point是绘图函数,两个列名分别传给了x和y作为横纵坐标,
ggplot独有的语法特点:列名没有引号,+号用于连接两个函数,行末写加号,说明两个代码在画同一张图,+会使缩进两个字目

3.属性设置(颜色、大小、透明度、点的形状,线型等)

1.手动设置

手动设置,需要设置为有意义的值
在这里插入图片描述

和数据没有挂钩,只是手动设置,注意这部分不属于映射,因此在aes外面

ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length), 
             color = "blue")
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length), 
             size = 5,     # 点的大小5mm
             alpha = 0.5,  # 透明度 50%
             shape = 8)  # 点的形状,24个数字代表24个形状
2.映射:按照数据框的某一列来定义图的某个属性
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))

根据Species分配颜色,注意要放到aes的括号里面去,表示映射,R包可以默认颜色
在这里插入图片描述

3.映射 vs 手动设置

在这里插入图片描述

映射:根据数据的某一列的内容分配为颜色
手动设置:把图形设置为一个或n个颜色,与数据内容无关

4.能不能自行指定映射的具体颜色?

color=颜色依据+(加号不要漏掉)scale_color_manual(values = c(“blue”,“grey”,“red”))
在这里插入图片描述

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"))

在这里插入图片描述

同理可得color可以换成别的属性,如shape,还可以用配色R包,如RColorBrewer,这个函数是可以直接+进ggplot的,其他的配色R包例如ggsci、paletteer
添加链接描述

#例如使用RColorBrewer R包,被加到了ggplot2里边,直接可用的颜色,scale_color_brewer()

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_brewer(palette = "Set1")

在这里插入图片描述

https://cloud.tencent.com/developer/article/1839444
#也可使用最强悍的配色R包paletteer
load("test.Rdata")
library(ggplot2)
library(paletteer)
ggplot(data = test)+
  geom_point(mapping = aes(x = a,
                           y = b,
                           color = change))+
  scale_color_paletteer_d(`"ButterflyColors::parides_zacynthus_polymetus"`)

在这里插入图片描述

#改大小
ggplot(data = test)+
  geom_point(mapping = aes(x = a,
                           y = b,
                           color = change),size = 5)+
  scale_color_paletteer_d(`"ButterflyColors::parides_zacynthus_polymetus"`)

在这里插入图片描述

在这里插入图片描述

5.区分color和fill两个属性
1.空心形状和实心形状都用color设置颜色
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 17) #17号,实心的例子

在这里插入图片描述

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 2) #2号,空心的例子

加粗样式

2.既有边框又有内心的,才需要color和fill两个参数
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill = "black") #24号,双色的例子

在这里插入图片描述

4.拼图

par里的mfrow
grid.arrage
cowplot
patchwork比较常用

5.导出

经典三段论
ggsave
eoffice-topptx

四、练习1(5_exercise.R)

1.加载test.Rdata,分别test的以a和b列作为横纵坐标,change列映射颜色,画点图。

load("test.Rdata")
library(ggplot2)

ggplot(data = test)+
  geom_point(mapping = aes(x = a,
                           y = b,
                           color = change))

在这里插入图片描述

2.尝试修改点的颜色为暗绿色(darkgreen)、灰色、红色

ggplot(data = test)+
  geom_point(mapping = aes(x = a,
                           y = b,
                           color = change))+
  scale_color_manual(values = c("blue","grey","red"))

在这里插入图片描述

抽奖函数:
> sample(1:12,3)
[1] 11  2 10
#c实现首尾相连
paste0("挖掘", 1:14)
paste0("入门", 1:12)
c(paste0("挖掘", 1:14),paste0("入门", 1:12))
#抽奖
> a = c(paste0("挖掘", 1:14),paste0("入门", 1:12))
> sample(a,1)
[1] "挖掘8"
#抽奖作弊,使用set.seed
a = c(paste0("挖掘", 1:14),paste0("入门", 1:12))
set.seed(10)
sample(a,1)

练习2

在这里插入图片描述
自己的答案:
1.

library(ggplot2)
p = ggplot(iris, aes(x=Species, y=Sepal.Width)) + 
  geom_boxplot()
p

在这里插入图片描述
2.

#添加颜色
p5 = ggplot(iris, aes(x=Species, y=Sepal.Width,fill =Species)) +
  geom_boxplot()
p5

在这里插入图片描述
3.

#加点
p5 = ggplot(iris, aes(x=Species, y=Sepal.Width,fill =Species)) +
  geom_jitter(shape=16, position = position_jitter(0.2)) +
  geom_boxplot()
p5

在这里插入图片描述
正确答案:

ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()
ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  geom_point()
  #这样相同的点就不能分开

在这里插入图片描述

p5 = ggplot(iris, aes(x=Species, y=Sepal.Width,fill =Species)) +
  geom_jitter() +
  geom_boxplot()
p5

在这里插入图片描述

p5 = ggplot(iris, mapping =aes(x=Species, y=Sepal.Width,fill =Species)) +
  geom_boxplot() +
  geom_jitter() 
  
p5

在这里插入图片描述

p5 = ggplot(iris, mapping =aes(x=Species, y=Sepal.Width,fill =Species)) +
  geom_jitter() + 
  geom_boxplot() 
 
p5

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1678809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【会议征稿】2024年机器人前沿技术与创新国际会议(FTIR 2024, 7/19-21)

2024年机器人前沿技术与创新国际会议&#xff08;FTIR 2024&#xff09;将于2024年7月19-21日在中国杭州举行。FTIR 2024聚焦前沿技术与创新&#xff0c;将把机器人领域的创新学者和专家聚集到一个共同的论坛。会议的主要目标是促进机器人的研究和开发活动&#xff0c;另一个目…

使用单目相机前后帧特征点匹配进行3D深度估计的方法

在计算机视觉和机器人领域&#xff0c;三维空间感知是实现环境理解和交互的核心技术之一。特别是在资源受限的场合&#xff0c;使用针孔模型的单目相机进行深度估计成为了一种既经济又实用的解决方案。单目深度估计技术依赖于从连续视频帧中提取和匹配特征点&#xff0c;以估计…

企业大模型如何成为自己数据的“百科全书”?

作者 | 郭炜 编辑 | Debra Chen 在当今的商业环境中&#xff0c;大数据的管理和应用已经成为企业决策和运营的核心组成部分。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何有效利用这些数据成为了一个普遍的挑战。 本文将探讨大数据架构、大模型的集成&#xff0…

线上网页点击菜单没有反应 报错ChunkLoadError:Loading chunk chunk-***** failed

现象 点击菜单无反应并且控制台报错Loading chunk chunk-***** failed 具体错误现象截图如下 分析 在线上页面已经打开的情况下&#xff0c;重新打包部署了前端项目。每次打包&#xff0c;js文件的hash值都会发生改变&#xff0c;因为我们的路由采用了懒加载&#xff0c;未…

吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.7

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周&#xff1a;优化算法 (Optimization algorithms)2.7 RMSprop 第二门课: 改善深层神经网络&am…

代码复现|Demucs Music Source Separation

一、背景介绍 Demucs是一个开源的音源分离项目。 Demucs在算法层面前后经历了三次大版本的进化&#xff0c;最原始的V1版本是&#xff1a;编解码LSTM。具体算法原理图如下所示。该版本在时域进行音源分离。关于阅读笔记请点击这篇文章。 V1版本原理图 V2版本是同时使用时域和频…

小白必看:新手学编程必会的100个代码

前言 我记得刚开始接触编程的时候&#xff0c;觉得太难了。 也很好奇&#xff0c;写代码的那些人也太厉害了吧&#xff1f;全是英文的&#xff0c;他们的英文水平一定很好吧&#xff1f; 他们是怎么记住这么多代码格式的&#xff1f;而且错了一个标点符号&#xff0c;整个程…

Flash attention入门

一、目录 flash attentionGPU运算流程flash attention 原理flash attention 与 standard attention 时间/内存 对比。flash attention 算法实现比较flash attention 计算、memory-efficient attention 等不同内核下用时 二、实现 flash attention 目的&#xff1a; 提高运行速…

NGM-SLAM:首创融合神经辐射场子图的3DGS-SLAM,问鼎SOTA!

论文标题&#xff1a; NGM-SLAM: Gaussian Splatting SLAM with Radiance Field Submap 论文作者&#xff1a; Mingrui Li, Jingwei Huang, Lei Sun Aaron, Xuxiang Tian, Tianchen Deng, Hongyu Wang 导读&#xff1a; 3DGS技术因其性能卓越而备受关注&#xff0c;3DGS-SLA…

GPT-4o 炸裂发布!你竟然还没用上?(附详细教程)

今天AI界的爆炸新闻非chatgpt-4o莫属&#xff0c;从早上到现在随处可见的文章推送&#xff0c;视频推送。 大家或多或少都有耳闻了&#xff0c;今天主要讲一讲我们普通人到底怎么用&#xff1f;如果不氪金行不行&#xff1f;我就想体验一下可不可以&#xff1f;带着问题往下看 …

Python 海龟画图(Turtle)命令大全

移动和绘制 forward() | fd() 使用语法: ​​turtle.forward(距离)​​ ​​turtle.fd(距离)​​ 参数说明: 距离 一个数字 (整数 或者 浮点) (注:单位是像素) 代码示例: import turtle turtle.forward(200) 效果: backward () | bk() | back() 使用语法: ​…

掏心经验分享,软考中项0基础入门篇!

想备考下半年中项&#xff08;系统集成项目管理工程师&#xff09;的朋友&#xff0c;不知道如何了解软考中项&#xff0c;今天给大家整理一篇关于我自己在备考软考时的一些考量和踩过的一些坑。&#xff08;无广&#xff0c;放心看&#xff09; 很多小伙伴总是听大家说软考中…

你是学会了还是学废了:Elasticsearch 7 集群拷贝到其它环境如何重置密码

欢迎您关注我的公众号【尚雷的驿站】 公众号&#xff1a;尚雷的驿站 CSDN &#xff1a;https://blog.csdn.net/shlei5580 墨天轮&#xff1a;https://www.modb.pro/u/2436 PGFans&#xff1a;https://www.pgfans.cn/user/home?userId4159 前言 本文描述了将生产ES集群打包拷贝…

线性模型之岭回归的用法

实战&#xff1a;使用岭回归模型 完整代码&#xff1a; import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split fro…

平芯微PW4056HH中文规格书

概述 PW4056HH 是一款完整的采用恒定电流/恒定电压的高压、大电流、单节锂离子电池线性充电 IC。充电电流可达 1A。输入 MAX 低工作电压 3.75V&#xff0c;降低充电功耗&#xff0c;提高效率。 PW4056HH 采用了内部 PMOS 架构&#xff0c;加上防反充电路&#xff0c;不需要外部…

Java开发大厂面试第04讲:深入理解ThreadPoolExecutor,参数含义与源码执行流程全解

线程池是为了避免线程频繁的创建和销毁带来的性能消耗&#xff0c;而建立的一种池化技术&#xff0c;它是把已创建的线程放入“池”中&#xff0c;当有任务来临时就可以重用已有的线程&#xff0c;无需等待创建的过程&#xff0c;这样就可以有效提高程序的响应速度。但如果要说…

Linux服务器lvm磁盘管理fdisk和df磁盘大小不同修改

服务器端由于硬盘是通过VCenter原来100G磁盘复制的虚拟机,复制完成后,原来100G的磁盘通过选择 磁盘重新复制出150G的磁盘,开机后发现还是原来的100G的磁盘,通过fdisk -l 查看有个sdb是150G, 但是已经划转的lvm盘只有100G, 通过df查看也是原来的100G: pvs查看pv里也是10…

【链路层和局域网】

文章目录 链路层和局域网网络节点的连接方式数据链路层和局域网链路层导论链路层&#xff1a;上下文链路层服务链路层在哪里实现&#xff1f;适配器通信错误检测奇偶校验校验和&#xff1a;CRC&#xff08;循环冗余校验&#xff09;多点访问链路和协议多路访问协议MAC&#xff…

立创EDA绘制PCB电路板

1、绘制好原理图后&#xff0c;点击设计---原理图转PCB&#xff0c;生成PCB文件 2、将元器件拖入电路板方框内&#xff0c;摆放布局并使用工具栏布线、放置过孔及丝印 3、然后顶层和底层铺铜 4、后面就可以生成制板文件发送嘉立创制板了。

基于国产LoRa的智慧农业解决方案--ASR6601、SX1278

我国《数字乡村发展战略纲要》明确指出“要推进农业数字化转型”&#xff0c;加快推广云计算、大数据、物联网、人工智能在农业生产经营管理中的运用。 然而&#xff0c;目前我国的农业数字化转型还面临着诸多挑战。我国整体农业机械化程度和自动化控制水平仍然较低。由于农田面…