R语言-修改(替换)因子变量的元素操作

因子变量的核心是水平,通过指定水平来修改。

x<-c(1,1,1,1,2,2,2,3,3,3,3,4)
xx<-factor(x);xx
levels(xx)
#得到水平为3的位置
level_3<-which(levels(xx)==3)
#重新赋值
levels(xx)[level_3]<-03
xx
#由于新值是03,0开头,所以把03当成3处理
levels(xx)[level_3]<-c("03")
xx
#字符串会自动转换成因子
levels(xx)[level_3]<-333
xx
#只要不是0开头的数字,都可以识别成因子
#如果还存在原来的因子水平,则删除未使用的因子水平
xx<-droplevels(xx)

补充:R语言开发之变量的数据类型&赋值&查找&删除

R语言中的变量提供了程序可以操作的命名存储,这个变量可以存储原子向量,而原子向量组或许多R对象的组合。所以,有效的变量名称应该是由字母,数字和点或下划线字符组成,并且变量名称以字母开头,或者点后面不带数字,我们来看一些变量命名的示例,如下:

变量名 合法性 原因
var_name2. 有效 由字母,数字,点和下划线组成
var_name% 无效 含有字符“%”因此无效。只允许点(.)和下划线(_)组成。
2var_name 无效 以数字开头,因此无效。
.var_name, var.name 有效 可以以点(.)开头,但点(.)后面不应是数字。
.2var_name 无效 以点(.)但后跟一个数字使其无效。
_var_name 无效 以下划(_)开始因此无效。

R语言中的变量可以使用向左,向右和等于运算符分配值,还可以使用print()或cat()函数打印变量的值,其中cat()函数将多个变量或项目组合成一个连续的打印输出 ,我们来看下使用实例:

输出结果如下:

上述代码中的向量c(TRUE,1)具有逻辑和数字类的混合,所以逻辑类被强制为数字类,使TRUE为1。大家注意下就好。

R语言中的变量本身没有被声明为任何数据类型,而是获取分配给它的R对象的数据类型,所以R被称为动态类型语言,这意味着我们可以在程序中使用它时一次又一次地改变同一个变量的变量的数据类型,或者使用同一个变量来存储任何数据类型,来看下案例:

输出结果如下:

我们如想要知道工作区中当前可用的所有变量,可使用ls()函数,并且它也可以使用模式来匹配变量名,示例如下:

输出结果如下:

根据我们的环境中声明的变量可能所有不同,所以我们的输出和这里输出结果可能不太一样,注意红色框框中的内容就好。我们接下来尝试使用ls()函数的模式来匹配变量名,示例如下:

输出结果如下:

以点(.)开头的变量是隐藏的,它们可以使用ls()函数的“all.names = TRUE”参数列出,示例如下:

输出结果如下:

我们可以使用rm()函数删除变量,示例如下:

输出结果如下:

好啦,本次记录就到这里了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言因子型数值转数值型的操作

    一直觉得只要是数字,不管是什么类型的,都可以通过as.numeric()函数转换为对应的numeric类型的数字,例如 x<-"123",x为character类型,而as.numeric(x)则为numeric类型的123. 但是因子(factor)类型却不一样. a<-factor(c(100,200,300,301,302,400,10)),它们的值分别为100 200 300 301 302 400 10,然而 as.numeric(a)对应的值并非100 200

  • R语言-在一张图上显示多条线的实现

    查询百度之后,发现在R上一次显示多张图的函数很多,比如layout()或者分屏函数,但是这些都不是我想要的结果. 之后,发现了line()函数可以保留原来图片继续作图,在括号中填入所需画图的部分即可(我是将一个矩阵作图). 先运行plot()函数,再注释掉plot()函数运行line()函数即可. 效果如下: 补充:R语言:在同一张图作不同曲线 R语言将两条曲线作在同一张图的方法是 library(ggplot2) year<-c(1993,1998,2003,2008) Res<-c(0.0

  • R语言-如何给直方图加标签

    看代码吧~ hist(data$MEDV,col="grey")#可以看到目标数据的总体分布 legend(35,170,c("min:5","median:21.2","mean:22.51","max:50"),fill=c("lightblue","wheat")) 补充:R语言作图--histogram(直方图) 最近小仙同学很是烦恼,本以为自己已经掌握了gg

  • 基于R语言for循环的替换方案

    R语言中,for循环运行比较慢 for(i in 1:1000){ print(i^2) } 补充:R语言:for循环使用小结 基本结构展示: vals =c(5,6,7) for(v in vals){ print(v) } #即把大括号里的内容对vals里的每一个值都循环run一遍 实例展示: 1. paste() 命令是把几个字符连接起来 如paste("A","B","C",sep=" ")得到的就是"A B

  • R语言:实现因子与字符串的互转

    在导入大批量数据时,如果没有显式地指定"stringsAsFactors = FALSE",默认会将所有的字符串转换为因子,导致数据处理速度较慢. 示例数据如下: name,math,english,sex,year "yiifaa",65,68,"M",2018 "yiifee",95,98,"F",2018 "guagua",75,78,"M",2018 &quo

  • R语言-绘制双坐标图直方图与折线的结合方式

    看代码吧~ par(mar = c(5, 5, 3, 4)+0.1) #似乎是设置图片位置 bar<-barplot(gu[1:22,6],xlim=c(0.5,26),ylim=c(0,200000),ylab="交易量", col="blue",col.axis="blue",col.lab="blue") mtext(c(1:22),side=1,line=1,at=bar,cex=0.8,col="bl

  • R语言实现导出矩阵

    程序实在是调不出来了,我决定破釜沉舟,直接把所有表格都打印出来,看看数据到底哪儿有问题. 然后就开始了闹心的矩阵导出... 首先,百度了一下,数据导出的代码为: write.table (x, file ="", sep ="", row.names =TRUE, col.names =TRUE, quote =TRUE) 其中: x:需要导出的数据 file:导出的文件路径 sep:分隔符,默认为空格(" "),也就是以空格为分割列 row.n

  • R语言 实现在循环中输出图片的操作

    今天在循环导出图片时,遇到了一个问题: 使用R语言导出图片的代码: setwd("E://R") jpeg(file="A.jpeg") print(plot(PEO$X, PEO$Y, pch=PEO$S)) dev.off() 但是若是将此代码运用到循环之中,则只会出来一张图A.jpeg 想了好久原因,发现--..!!!! 命名方法不对啊!!! 只有一个名字!!!当然不行啊!!! 于是搜索如何循环命名- 找到了老朋友paste() yourfilename=pa

  • R语言-修改(替换)因子变量的元素操作

    因子变量的核心是水平,通过指定水平来修改. x<-c(1,1,1,1,2,2,2,3,3,3,3,4) xx<-factor(x);xx levels(xx) #得到水平为3的位置 level_3<-which(levels(xx)==3) #重新赋值 levels(xx)[level_3]<-03 xx #由于新值是03,0开头,所以把03当成3处理 levels(xx)[level_3]<-c("03") xx #字符串会自动转换成因子 levels(

  • R语言修改下载安装包install.package的默认存储路径的操作方法

    这次遇到的问题是:R语言下载安装包时会先将下载下来的二进制zip文件保存在本地,然后将其解压安装到R的library文件夹下.包被下载后会默认将二进制zip文件保存在本地C盘的临时会话的downloaded_packages目录下,不希望保存在该目录下,想手动修改保存路径. 查找了一下方法,发现很多都让用.libPaths()或者lib参数来修改.这里说明一下.libPaths和lib参数的作用. libPaths {base} 文档中给出的说明大致意思就是这是一个获取或者设定R存放已经安装的包

  • R语言gsub替换字符工具的具体使用

    gsub()可以用于字段的删减.增补.替换和切割,可以处理一个字段也可以处理由字段组成的向量. 具体的使用方法为:gsub("目标字符", "替换字符", 对象) 在gsub函数中,任何字段处理都由将"替换字符"替换到"目标字符"这一流程中实现,令替换字符为''''可实现删除,令替换字符为"目标字符+增补内容"可实现增补,替换和切割也是使用类似的操作. > text <- "AbcdE

  • R语言 如何删除指定变量或对象

    R语言中删除指定变量或对象,可以直接删除某名字的变量或对象,也可以删除以字符串形式表示的变量和对象. 例如: 1.直接删除 >a<-c(1,2,3) >rm(a) 2.以字符串形式的方式删除 >a<-c(1,2,3) >rm('a') 3.删除不再需要的对象 在使用R语言的过程中,除了要保留特定的对象外,其他的对象不再需要 >a<-ls() > rm(list=a[which(a!='c2' & a !='m2' & a !='cpu1

  • R语言绘图公式与变量对象混合拼接实现方法

    当我们在R中进行绘图时,如果涉及到数学或统计公式的展现,可以使用函数:expression(),并且与 paste() 结合可以非常轻松的展现出自己想要展示的公式.详细的相关内容可参考: R进行绘图时输出希腊字符.上标.下标及数学公式 但这样做会遇到一个问题,在我们想批量产生大量含有不同变量值的标题时,如果遇到变量与公式的混合输出,就没有办法将变量里面的值进行输出了(使用 do.call() 等函数均不行). 举个栗子,若 m <- 10000,n <- 2000,我们如何让这两个变量直接显示

  • R语言开发之CSV文件的读写操作实现

    在R中,我们可以从存储在R环境外部的文件读取数据,还可以将数据写入由操作系统存储和访问的文件.这个csv文件应该存在于当前工作目录中,以方便R可以读取它, 当然,也可以设置自己的目录,并从那里读取文件. 我们可以使用getwd()函数来检查R工作区指向哪个目录,并且使用setwd()函数设置新的工作目录,如下: 输出结果如下: csv文件是一个文本文件,其中列中的值用逗号分隔,我们可以将以下数据保存入txt文件中,并且修改后缀名称为csv: id,name,salary,start_date,d

  • R语言中的因子类型详解

    一.Factor函数 #函数factor可以把一个向量编码为一个因子,其一般形式为: #factor(x,levels=sort(unique(x),na.last=TRUE),labels,exculde=NA,order=FALSE) #其中x是向量,levels是水平,可以自行指定各离散的取值,不指定时由x的不同值来表示,labels可以用来指定各水平的标签 #不指定时用各离散取值的对应字符串 sex<-c("M","F","M",&

  • R语言实现将分类变量转换为哑变量(dummy vairable)

    生成测试数据 a1 <- c("f","f","b","b","c,"c") 利用nnet包中的函数class.ind > class.ind(a1) b c f [1,] 0 0 1 [2,] 0 0 1 [3,] 1 0 0 [4,] 1 0 0 [5,] 0 1 0 [6,] 0 1 0 class.ind代码 class.ind <- function(cl) { n &

  • R语言开发之输出折线图的操作

    线形图是通过在多个点之间绘制线段来连接一系列点所形成的图形,这些点按其坐标(通常是x坐标)的值排序,并且它通常用于识别数据趋势. 在R中的通过使用plot()函数来创建线形图,语法如下: plot(v,type,col,xlab,ylab) 参数描述如下: v - 是包含数值的向量. type - 取值"p"表示仅绘制点,"l"表示仅绘制线条,"o"表示仅绘制点和线. xlab - 是x轴的标签. ylab - 是y轴的标签. main - 是图

  • R语言ggplot2x轴顺序设置自定义颜色的操作

    先声明一下所用的数据集 第一个图如下 这个图主要在于x轴的顺序设置上,如果按不做任何处理的话>3那个就会在2之前,解决方法是b[,1]<-factor(b[,1],levels=c('2','3',">3")),这句代码可以重新设置因子的级别 完整代码如下: a[,1]<-factor(a[,1],levels=c('2','3',">3")) ggplot(a,aes(x=a[,1],y=a[,2]))+geom_bar(stat=&

随机推荐