R环境依赖的备份与恢复全攻略
文章目录
- 备份
- 恢复
- 1. 加载保存的包名称列表
- 2. 重新安装包
- 注意事项
- 比对打印缺失的包
- 代码解释
- 可选:以DataFrame格式输出缺失的数据
- 另外一种导出与导入方法
备份
首先,通过以下代码导出所有的包版本为文件。
# Store the list of installed package names in a variable
installed_pkgs <- installed.packages()[, 1]
# Save the variable to an Rdata file
save(installed_pkgs, file = "rpkgs.Rdata")
恢复
通过上一步的 "rpkgs.Rdata"文件来安装
要通过rpkgs.Rdata
文件来重新安装之前保存的R包列表,您可以按照以下步骤来操作。
1. 加载保存的包名称列表
首先,需要加载之前保存的rpkgs.Rdata
文件,其中包含了包名称的列表。
load("rpkgs.Rdata")
在执行这行代码后,变量 installed_pkgs
中会包含之前保存的包名称列表。
2. 重新安装包
然后,可以使用 install.packages()
函数来批量安装这些包。以下代码会检查每个包是否已经安装,如果未安装则安装它。
# 检查每个包是否已安装,如果没有安装则安装
for (pkg in installed_pkgs) {
if (!require(pkg, character.only = TRUE)) {
install.packages(pkg, dependencies = TRUE)
}
}
这段代码会遍历installed_pkgs
中的每个包名称,并在需要时进行安装。通过这种方法,您可以确保环境中恢复到与之前相同的包集合。
注意事项
- 请确保您已连接到互联网,因为安装包需要从CRAN下载。
- 如果您之前的包来自不同的仓库(例如Bioconductor),您可能需要为特定的包指定安装源。
比对打印缺失的包
xlsx文件,第一文件的A,B列是否都包含在第二文件中.不完全包含时候,打印只存在第一文件中的
如果第一文件的A、B列组合并不完全包含在第二文件中,并且您希望打印出只存在于第一个文件中的行,可以稍微调整一下代码,找到并输出这些不匹配的行。
以下是Python代码的实现:
import pandas as pd
# 读取第一个文件的A、B列
file1 = pd.read_excel("file1.xlsx", usecols=["A", "B"])
# 读取第二个文件的A、B列
file2 = pd.read_excel("file2.xlsx", usecols=["A", "B"])
# 将两个DataFrame的A、B列组合成元组,便于对比
file1_tuples = set([tuple(x) for x in file1.to_numpy()])
file2_tuples = set([tuple(x) for x in file2.to_numpy()])
# 检查 file1 的 A、B 列是否都包含在 file2 中
if file1_tuples.issubset(file2_tuples):
print("第一文件的A,B列都包含在第二文件中")
else:
print("第一文件的A,B列并不完全包含在第二文件中")
# 找出只存在于第一个文件中的组合
only_in_file1 = file1_tuples - file2_tuples
# 打印只存在于第一个文件中的组合
print("只存在于第一个文件中的组合(A, B 列)如下:")
for item in only_in_file1:
print(item)
代码解释
file1_tuples - file2_tuples
会得到只在第一个文件中的(A, B)
组合。- 如果不完全包含,则打印出这些只存在于第一个文件的
(A, B)
列组合。
可选:以DataFrame格式输出缺失的数据
如果希望输出为一个DataFrame(便于保存或进一步分析),可以使用以下代码:
# 转换缺失的组合为DataFrame
only_in_file1_df = pd.DataFrame(list(only_in_file1), columns=["A", "B"])
print("只存在于第一个文件中的组合(A, B 列):")
print(only_in_file1_df)
这样,您可以直接将 only_in_file1_df
保存为新的Excel文件:
only_in_file1_df.to_excel("only_in_file1.xlsx", index=False)
这样会将只存在于第一个文件中的 (A, B)
组合保存到 only_in_file1.xlsx
文件中。
另外一种导出与导入方法
原理为直接同步库所有文件
这个时候我们只需要在新电脑上安装相同版本的 R 和 Rstudio,将旧电脑的 R 包文件夹覆盖新电脑的 R 包文件夹即可。
输入以下代码即可获得 R 包安装的路径(如果你有多个路径,说明你的 R 包安装在多个位置)。
.libPaths()
1Windows
在 Windows 上很好操作,通常是 …/R-x.x.x/library 路径下。如下为我师姐的 Windows 电脑输出结果
代码语言:javascript
复制
“C:/Program Files/R/R-4.1.2/library”
2Mac
在 Mac 上相对麻烦一点~
复制路径,点开访达(或使用快捷键 Command+Shift+G),在弹出的对话框中输入路径,然后点击前往按钮即可。
又或者直接使用终端应用程序来查找路径。打开终端,输入 “cd” 命令,后跟路径,然后按回车键即可。
cd /Library/Frameworks/R.framework/Versions/4.1/Resources/library
参考文章:https://cloud.tencent.com/developer/article/2330006