R语言实现两文件对应行列字符替换(解决正负链统一的问题)
假设存在文件file1.xlsx,其内容如下:

存在文件file2.xlsx,其内容如下:

现在我想从第七列开始,将file2所有的字符替换成file1一样的,即第七、八、九、十列不需要改变,因为file1和file2的字符一致的(3和1,2和4);从第11列开始,file1和file2的字符不一样了。我的命名规则是从第11列开始,file2的2改为3,4改1,3改为2,1改为4;
下面是代码的实现过程:
install.packages("openxlsx") #安装openxlsx安装包
install.packages("readxl") #安装readxl安装包
install.packages("stringr")#安装stringr安装包
library("stringr")
library(readxl)
library(openxlsx)
model_57hanchip<- read_excel("E:/myproject/file1.xlsx")
kg_ame<- read_excel("E:/myproject/file2.xlsx")
model_57hanchip<-as.matrix(model_57hanchip);model_57hanchip
kg_ame<-as.matrix(kg_ame);kg_ame
for (i in 1:4){
g=i*2+5
j=i*2+6
if(any(intersect(model_57hanchip[,g:j], kg_ame[,g:j])>0)==TRUE | all(kg_ame[,g:j]==0)==TRUE){
print(c(g,j))
}else if(all(c(1,2) %in% kg_ame[,g:j])==TRUE){
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "1", "4");
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "2", "3");
print(c(kg_ame[,g],kg_ame[,j]))
}else if(all(c(1,3) %in% kg_ame[,g:j])==TRUE){
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "1", "4");
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "3", "2");
print(c(kg_ame[,g],kg_ame[,j]))
}else if(all(c(2,4) %in% kg_ame[,g:j])==TRUE){
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "2", "3");
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "4", "1");
print(c(kg_ame[,g],kg_ame[,j]))
}else {
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "3", "2");
kg_ame[,g:j] =str_replace_all(kg_ame[,g:j], "4", "1");
print(c(kg_ame[,g],kg_ame[,j]))
}
}
##上述的代码的意思是将1改为4,2改为3,3改为2,4改为1;
openxlsx::write.xlsx(kg_ame, file = "E:/myproject/kg_ame.xlsx") #保存为Excel文件
R语言实现两文件对应行列字符替换(解决正负链统一的问题)的更多相关文章
- R语言-探索两个变量
目的: 通过探索文件pseudo_facebook.tsv数据来学会两个变量的分析流程 知识点: 1.ggplot语法 2.如何做散点图 3.如何优化散点图 4.条件均值 5.变量的相关性 6.子集散 ...
- R语言中两个数组(或向量)的外积怎样计算
所谓数组(或向量)a和b的外积,指的是a的每个元素和b的每个元素搭配在一起相乘得到的新元素.当然运算规则也可自己定义.外积运算符为 %o%(注意:百分号中间的字母是小写的字母o).比如: > a ...
- 在R语言环境中无法载入rJava包的解决办法
问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...
- R语言读取本地文件注意事项
R里面应该用/,而不是\ ,或者用两个\\ R区分大小写,所以应该用C:,而不是c:
- R语言读取excel文件的3种方法
R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为 ...
- R语言读取EXCEL文件的各种方法
路径问题 原始文件路径C:\Users\air\Desktop\1.txt R中有两种方法读取该路径 C:\\Users\\air\\Desktop\\1.txt C:/Users/air/Deskt ...
- R语言进行文件夹操作示例(转)
rm(list=ls())path = 'J:/lab/EX29 --在R语言中进行文件(夹)操作'setwd(path)cat("file A\n", file="A& ...
- 使用R语言-为矩阵(表格)的行列命名
转自:http://www.dataguru.cn/article-2217-1.html R语言中经常进行矩阵(表格)数据的处理,在纷繁复杂的数据中,为其行列定义一个名字变得尤为重要.在处理巨量数据 ...
- R语言快速入门
R语言是针对统计分析和数据科学的功能全面的开源语言,R的官方网址:http://www.r-project.org/ 在Windows环境下安装R是很方便的 R语言的两种运行模式:交互模式和批处理模 ...
随机推荐
- Lodop打印旋转180度 倒着打
方法1:打印出来后,直接把纸张倒过来.如果本身是白纸,打印机出纸内容是倒着的,可以打出来后手动倒着把纸张正过来.如果本身不是白纸,需要打印的纸张上有背景,调整进纸方向.(如果是卷纸,卷纸背景是反的,查 ...
- FastJson、Jackson、Gson进行Java对象转换Json细节处理
前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...
- Nginx 减少关闭连接的time_wait端口数量
L:129
- python 模块之-pickle
Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关 ...
- BZOJ3812 主旋律(状压dp+容斥原理)
设f[S]为S点集是SCC的方案数.考虑通过去掉不合法方案转移.可以枚举入度为0的SCC所含点集S',这样显然S^S'内部的边和由S'连向S^S'的边删还是不删任选.但是这样无法保证S'包含所有入度为 ...
- Codeforces 888G(分治+trie)
按位贪心,以当前考虑位是0还是1将数分成两部分,则MST中这两部分之间只会存在一条边,因为一旦有两条或以上的边,考虑两条边在原图中所成的环,显然这两条边有一条是环上的权值最大边,不会出现在MST中.则 ...
- ExaWizards 2019
AB:div 3 AB??? C:div 1 C???场内自闭的直接去看D.事实上是个傻逼题,注意到物品相对顺序不变,二分边界即可. #include<iostream> #include ...
- Luogu4389 付公主的背包(生成函数+多项式exp)
显然构造出生成函数,对体积v的物品,生成函数为1+xv+x2v+……=1/(1-xv).将所有生成函数乘起来得到的多项式即为答案,设为F(x),即F(x)=1/∏(1-xvi).但这个多项式的项数是Σ ...
- 自定义Wed框架
Wed框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义wed框架 impor ...
- 【BZOJ2127】happiness 网络流
题目描述 有\(n\times m\)个人,排成一个\(n\times m\)的矩阵.每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一 ...