精华内容
下载资源
问答
  • R语言all函数、any函数判断逻辑向量(logical vector)实战 目录 R语言all函数、any函数判断逻辑向量(logical vector)实战 #基本语法 # all函数和any函数 # all函数和any函数处理NA值的情况 # all函数与...

    R语言all函数、any函数判断逻辑向量(logical vector)实战

    目录

    R语言all函数、any函数判断逻辑向量(logical vector)实战

    #基本语法

    展开全文
  • R语言中的vector(向量),array(数组)总结

    万次阅读 多人点赞 2016-04-09 12:10:13
    对于那些有一点编程经验的人来说,vector...R语言很奇怪的是它是面向对象的语言,所以经常会调用系统的方法,而且更奇怪的是总是调用“谓语”的方法,用起来像是写句子一样,记起来真是让人费解。比如is.vector(),read.

    对于那些有一点编程经验的人来说,vector,matrix,array,list,data.frame就相当于编程语言中的容器,因为只是将R看做数据处理工具所以它们的底层是靠什么实现的,内存怎么处理的具体也不要深究。

    R语言很奇怪的是它是面向对象的语言,所以经常会调用系统的方法,而且更奇怪的是总是调用“谓语”的方法,用起来像是写句子一样,记起来真是让人费解。比如is.vector(),read.table(),as.vector()、、

    直接开始吧:(由于习惯,大部分用"="代替"<-")

    一、向量vector,

    1.是最基本的数据容器,里面的数据必须是同一类型,先看基本用法:

    a<-c(1,2,3,4,5,6,7,8,9)

    或者赋值函数assign,

    assign("a",c(1,2,3,4,5,6,7,8,9))
    
    > is.vector(a)
    [1] TRUE
    
    > is.matrix(a)
    
    [1] FALSE
    > is.array(a)
    [1] FALSE
    > is.list(a)
    [1] FALSE


    或者利用随机分布函数,rnrom(n,mean,sd),runif(n,min,max)、、、

    > b=runif(20,min=1,max=20)
    > b
     [1]  2.181016 18.417605  9.748379  2.122849  1.281871  4.099617
     [7] 14.162348 18.034863  7.464664  9.599227 18.973259  1.900773
    [13]  8.995223 11.048916 11.667131  3.859275 17.992988  1.089552
    [19] 13.490061 12.864029

    或者按照一定的步长:

    > a=seq(1,20,by=3)
    > a
    [1]  1  4  7 10 13 16 19

    或者重复:

    > s=rep(a,times=3)
    > s
     [1]  1  4  7 10 13 16 19  1  4  7 10 13 16 19  1  4  7 10 13 16 19

    逻辑向量:

    > b=a>8;b
    [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE

    缺失数据用大写NA表示,数据不确定用NaN表示,数据是无穷用Inf表示(一会全大写,一会大写加小写,一会首字母大写,真是醉了),判断是否为空数据用函数is.na(),判断是否不确定用函数is.nan(),数据是否有限用is.finite(),数据是否为无穷用函数is.infinite():

    > z=c(1:3,Na);z
    Error: object 'Na' not found
    > z=c(1:3,NA);z
    [1]  1  2  3 NA
    
    > is.na(z)
    [1] FALSE FALSE FALSE  TRUE

    将缺失的数据赋值为0:

    > z[is.na(z)]=0;z
    [1] 1 2 3 0

    下面将这几个有问题的数据放在一个向量中:

    > z=c(0/1,0/0,1/0,NA);z
    [1]   0 NaN Inf  NA
    > is.na(z)
    [1] FALSE  TRUE FALSE  TRUE
    > is.nan(z)
    [1] FALSE  TRUE FALSE FALSE
    > is.finite(z)
    [1]  TRUE FALSE FALSE FALSE
    > is.infinite(z)
    [1] FALSE FALSE  TRUE FALSE
    
    

    2.vector中元素的下标引用.

    > a=round(runif(9,min=1,max=9))
    > a
    [1] 3 8 8 8 2 7 3 5 3

    可以看见,与容器不同,vector的下标是从1开始的:

    > a[0]
    numeric(0)
    
    > a[1]
    [1] 3

    选取第2和第3个数,引用非常方便:
     

    > a[c(2,3)]
    [1] 8 8

    引用除了第一个值的所有数,用了减号"-":
     

    > a[-c[1]]
    [1] 8 8 8 2 7 3 5 3

    3.vector作为R语言工具,需要了解vector的各种运算。

    ①+-×÷,其他运算如log,exp,cos,sqrt等也相似。其意义是对应的向量的每个元素分别做运算,

    > x=c(1,2,3)
    > y=c(2,3,4)
    > z=2*x+y-1
    > z
    [1] 3 6 9
    
    > x^2
    [1] 1 4 9
    
    > cos(x)
    [1]  0.5403023 -0.4161468 -0.9899925
    
    > sqrt(x)
    [1] 1.000000 1.414214 1.732051

    ②与向量有关的函数,min(x),max(x), sum(x),range(x),太简单就不在细说,需要强调的是which.min(x),这个还是蛮重要的。

    > a=rnorm(10,mean=5,sd=2)
    > a
     [1] 5.914559 2.604346 5.342572 9.006863 6.547221 7.519781 7.330211
     [8] 8.322956 6.875491 5.883626
    > which.max(a)
    [1] 4
    > which.min(a)
    [1] 2
    > a[which.max(a)]
    [1] 9.006863
    > a[which.min(a)]
    [1] 2.604346

    其他的如sd(a),var(a),length(a),sort(a),分别是求方差,标准差,长度,排序。与python不同R语言的vector所有操作都不会改变vector本身的值。

    4.由于R是一种基于对象的语言,R的对象分为单纯对象和复合对象两种,单纯对象的所有元素都是同一数据类型(数值、字符串),元素不再是对象。复合对象的元素可是是不同的类型,每个元素是一个对象。

    R的对象都有两个基本的属性:mode和length,向量的类型为:logical(逻辑型)、numeric(数值型)、complex(复数型)、character(字符型)。

    > b=c(0:9)
    > b
     [1] 0 1 2 3 4 5 6 7 8 9
    > is.numeric(b)
    [1] TRUE
    > is.character(b)
    [1] FALSE
    > c=as.character(b)
    > c
     [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
    > is.numeric(c)
    [1] FALSE
    > is.character(c)
    [1] TRUE

    二、数组array:多维的同一类型集合(字符型、数值型、逻辑型、复数型),R可以很容易地生成和处理数组,特别是矩阵matrix是一个二维数组。

    1.可以通过定义dim(维度)将向量变成matrix。

    a=c(1,3,4,5,6,7,8,9,3)
    > dim(a)=c(3,3)
    > a
         [,1] [,2] [,3]
    [1,]    1    5    8
    [2,]    3    6    9
    [3,]    4    7    3

    或者:

    > a=array(a,dim=c(3,3))
    > a
         [,1] [,2] [,3]
    [1,]    1    5    8
    [2,]    3    6    9
    [3,]    4    7    3

    或者:

    > a=matrix(a,nrow=3,ncol=3);a
         [,1] [,2] [,3]
    [1,]    1    5    8
    [2,]    3    6    9
    [3,]    4    7    3
    
    > is.vector(a)
    [1] FALSE
    > is.matrix(a)
    [1] TRUE
    > is.array(a)
    [1] TRUE
    
    > is.list(a)
    [1] FALSE

    可以发现,a已经通过定义维度将其变成了一个矩阵(matrix)和数组(array),下面将讲matrix其实是一个二维的array。

    2.下标引用

    > a=c(1:24)
    > dim(a)=c(2,3,4)
    > a[2,1,2]
    [1] 8
    > a[1,2:3,2:3]
         [,1] [,2]
    [1,]    9   15
    [2,]   11   17
    > a[1, , ]
         [,1] [,2] [,3] [,4]
    [1,]    1    7   13   19
    [2,]    3    9   15   21
    [3,]    5   11   17   23

     

    展开全文
  • 简单来说,R语言中的vector是一个包含许多元素的一维数据结构,类似Python里的列表。下面的命令可以构造一个简单的R语言向量: #c()函数意思为connect,它把括号里的内容整合成一个vector或list myVec1 <- c(1, 2...

    注:本博客旨在分享个人学习心得,有不规范之处请多多包涵!

    Vector 向量

    简单来说,R语言中的vector是一个包含许多元素的一维数据结构,类似Python里的列表。下面的命令可以构造一个简单的R语言向量:

    #c()函数意思为connect,它把括号里的内容整合成一个vector或list
    myVec1 <- c(1, 2, 3, 4, 5)
    myVec2 <- 1:5
    myVec3 <- seq(1, 5, 1) #从1开始到5,每次增加量为1
    #这里的myVec1、myVec2、myVec3是一样的
    

    R语言允许在一个vector里存多种数据类型,但所有数据会被转化成一种类型,优先级为NULL < raw < logical < integer < double < complex < character < list < expression

    R语言中vector的索引与计算如下例所示:

    myVec1[1] #R语言的索引从1开始而并非0,所以这个的输出为1
    myVec1[c(1,5)] #输出为myVec1的第一个和第五个元素,1 5
    myVec[-2] #输出除第2个元素之外的所有元素,1 3 4 5
    myVec1[3] <- 7 #myVec1的第三个元素值被改为7,myVec1变为1 2 7 4 5
    

    如果要创建一个vector,用以下指令:

    myVec4 <- numeric() #数值型的向量,默认所有值为0
    myVec5 <- character() #字符型的向量,默认所有值为空
    

    下例可结合上面所有的内容:

    #该例可找到1到100000里所有能被7整除的数
    test <- 1:100000 #我们要找的范围,它是一个vector
    output <- numeric(length(test)) #创建一个数值型向量,长度为length(test),即test向量的长度
    k <- 1 #初始化output向量的索引
    for(i in test){ #用i循环遍历所有test向量中的元素
        if(i %% 7 == 0){ #如果这个元素能整除7
            output[k] <- i #把这个数字存在output向量的第k位
            k <- k + 1 #把索引增加1
        }
    }
    

    如果想要对结果进行进一步筛选,参考下例:

    #在100到300范围内能被7整除的数
    filtered <- output[output > 100 && output < 300]
    

    R语言中vector是可以直接进行运算的。进行运算时,如果是vector和单一值的运算,vector内所有元素都会与这个值进行运算。如1:5+3,结果是每个元素都变大了3。如果是两个vector的运算,两个vector内对应位置的元素会进行运算。如1:5-1:5,结果是5个0。

    Matrix 矩阵

    简单来说,R语言中的matrix(矩阵)是一个二维的vector(向量)。
    关于矩阵的创建和取索引请看下例:

    test <- 1:12 #数据
    dim(test) <- c(3, 4) #将test向量的维度变为3行4列
    test[1, 2] #获取test第1行第2列第元素,输出为4
    test[2, ] #获取test第2行所有元素,输出为2 5 8 11
    test[, 4] #获取test第4列所有元素,输出为10 11 12
    test[10] #获取test中从[1, 1]开始按列读第10个元素,10
    test[2, c(3, 4)] #获取test第2行第3和4列元素,输出为8 11
    

    点开Environment里的test矩阵,窗口左上会出现test具体内容:
    列表
    有另一种创建矩阵的方式:

    #data是填入的数据,nrow是行数,ncol是列数,byrow是填写数据是否按行,默认是FALSE(按列填)
    newMatrix <- matrix(data = 1:30, nrow = 5, ncol = 6, byrow = TRUE)
    

    R语言中矩阵的运算与向量类似。要注意的是数学中的矩阵乘法要用%*%这个符号,而不是单纯的*

    List 列表

    R语言的列表和向量在某些方面比较类似。它也是一个一维的数据结构,但不同的数据是不同类型且有自定义的名称。
    关于列表的创建和索引访问请见下例:

    myList <- list(char = c("a", "b", "c"), num = 1:7, func = sum, logic = TRUE, list = list(one = 1, two = 2, three = 3)) #可以在括号里加任何数据类型,甚至另一个列表
    names(myList) #返回myList里所有元素的名称,输出为"char" "num" "func" "logic" "list"
    length(myLIst) #返回myList的长度(有几个元素),输出为5
    
    myList[1] #myList的第1个元素内容及其名称,输出为c("a", "b", "c")与char
    myList[[2]] #myList的第2个元素内容,输出为1:7
    myList[[2]][4] #myList的第2个元素内容的第4位,输出为4
    myList$logic #myList中名字为logic的元素的内容,输出为TRUE
    myList["logic"] #myList中名字为logic的元素内容及其名称,输出为TRUE与logic
    

    myList在Console中的显示如下图:
    myList

    结束语

    Vector, Matrix, List是三种比较常用的数据类型。data.frame类型将在下次着重介绍。有任何问题或想法欢迎评论和私信!

    展开全文
  • R语言List和Vector互转源码分享 写哪些东西 背景 参考资料链接 R语言 源码分享 注意事项 1.故事背景 2021年8月1日前后,有个研究生的小朋友,需要使用R语言读取Excel数据,计算生成一些图表文件。热心肠的我从零...

    R语言List和Vector互转源码分享

    正文

    1.List转为Vector

    一行代码搞定:dest_vector = as.vector(unlist(src_list))

    附带解释:

    • src_list:是List列表类型,也是入参,需要被转化的对象
    • dest_vector:列表转化后的向量对象,算是出参
    • as.vector():把其他数据类型转化为向量类型,具体可在R交互终端中运行命令help(as.vector),查看英文解释
    • unlist():遍历List列表对象,把原子类型的变量转存到一个向量中。英文原文:Given a list structure x, unlist simplifies it to produce a vector which contains all the atomic components which occur in x.

    2.Vector转为List

    一行代码搞不定,所以封装了一个函数

    源代码:

    func.vector2List = function(src_vector,dest_list){
       #说明 向量一经定义便不能删除元素,只能增加容量或修改元素的值
       # 本函数的思路就是定义一个中间变量转存Vector元素,在中间变量中
       # 删除或更新元素,然后把中间变量转化为Vector返回
       #参数约束
       temp_list = list();
       len = 0;
        # convert
       for(v in src_vector){
           # add your condition to check whether save or not
           dest_list[len+1] = v;
           len = len + 1;
       }
        # return
       return (dest_list); 
    }
    
    展开全文
  • vector函数和鸡肋的as.vector()

    千次阅读 2016-03-17 11:13:07
    vector(mode = "logical", length = 0) as.vector(x, mode = "any") #下面没写明默认值,所以Usage这里写的就算默认值 ...这三个函数都是同族的 vector produces a vector of the given length and mode. vect
  • 创建一个函数,该函数接受字符向量作为输入,并返回与字符向量中每个字母在字母表中的位置对应的数值。(示例输入= "abc",输出= c(1,2,3))。通过对变量x的作用来证明函数是有效的...
  • 【往期回顾】 R语言 | 第一部分:数据预处理 R语言|第2讲:生成数据 R语言常用的数据输入与输出方法 | 第三讲 R语言数据管理与dplyr、tidyr | 第4讲 R语言 控制流:for、while、ifelse和自定义函数function|...
  • vector函数

    2019-02-26 09:38:19
    原文:https://blog.csdn.net/qq_36386435/article/details/82379261  原文:...   基本操作  ((1)头文件#include&lt; vector &.......(2)创建vector对象,vector&lt; int ...
  • R中主要的循环函数(loop functions)有 lapply( )、sapply( )、apply( )、tapply( ) 和 mapply( )。lapply( )lapply( )对列表中每个元素,包括各种类型的对象(向量、矩阵、数据框等),运用函数,返回一个新的列表。...
  • 本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569也同步更新于我的个人博客:...虽然之前学习过Pascal、C、Python等语言,但是初次接触R语言还是感觉跟其他的编程语言有本质的不同。R语言是数...
  • R语言diff函数计算向量元素的差值实战 目录 R语言diff函数计算向量元素的差值实战 #基本语法 # 基础diff函数 #带滞后的diff函数 diff函数计算数值向量的连续元素对之间的差值。 既然是作差,那么操作的对象...
  • 小白求教大神 是这样的,我有7376条数据,因为太多所以需要分层抽样。 构思是按照序号由小到大每六个为一组进行随机抽样。 ...后来用as.vector进行了数据变换还是不行。 求教各位大神,不胜感激
  • R语言 编写自定义函数

    千次阅读 2020-04-29 12:16:35
    R语言实际上是函数的集合,用户可以使用base,stats等包中的基本函数,也可以编写自定义函数完成一定的功能 一个函数的结构大致如下所示 myfunction <- function(arglist) { statements return(object) } ...
  • R语言常用函数整理

    千次阅读 2020-10-21 08:45:43
    R语言基础函数整理 R语言常用函数整理本篇是基础篇,即R语言自带的函数。 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为...
  • typora-copy-images-to: …\...在使用R时,要尽量用array的方式思考,避免for循环,多用apply族函数代替 vector是一维的array,dataframe可以看作特殊的list。 apply apply(array, margin, FUN, …) 在array上,沿ma.
  • R语言 randomForest 函数

    2021-09-21 15:39:26
    randomForest函数 randomForest在RStudio中的Documentation: randomForest {randomForest} R Documentation Classification and Regression with Random Forest Description randomForest implements Breiman's ...
  • 前言Apply系列函数作为R语言中用于替换for和while循环的利器,在批量循环计算的过程中发挥着非常重要的作用,其他的R包如dplyr,plyr和data.table的很多数据操作思路和apply系列函数有很多的借鉴和相似之处,最经典...
  • R语言replace函数数值替换实战 目录 R语言replace函数数值替换实战 #基本语法 #仿真数据 #replace函数应用 #基本语法 replace(x, 1, 2) # Basic R syntax of replace function #仿真数据 x <...
  • 笔者也是一名R语言才入门的小白,我学习R的主要用途时处理结构性数据(也就是表格),学习的途径主要是我所在的悉尼大学的课程以及edx平台。 这篇博客主要是我复习R基础的笔记,用来记录一些函数的使用方法,它的...
  • 我在做几十个变量的相关分析,想用corrplot()函数画相关系数矩阵图,结果每次输出都有这个报错。因为原来的数据里有负数,于是我把原数据里的负数全部都改了(负数无实际意义只是为了区分),...R语言小白,我太难了。
  • R语言table函数

    万次阅读 2016-06-30 17:57:33
    R语言table函数及其详解
  • R: vector 向量的创建、操作等。

    千次阅读 2018-05-11 21:07:00
    ################################################### ... 怎么创建向量 vector,,及其相关操作 ??? 解决方案: a <- 3; 或 a=3 #单数据变量 a * 2; sqrt(a); #单数据变量的简单运算 ...
  • R语言case_when函数和cases函数实战 目录 R语言case_when函数和cases函数实战 #仿真数据 # 导入dplyr包 # case_when函数 #导入memisc包 #cases函数 #仿真数据 x1 <- 1:6 # Create first vector ...
  • R语言中apply和sapply函数

    千次阅读 2020-03-12 22:13:32
    Retruns a vector or array or list of values obtained by applying a function to margins of an array or matrix. apply函数经常用于计算矩阵中行或列的均值,使用方法如下。 a <- matrix(1:9,nrow=3) ##生成3...
  • sort( )函数--R语言

    千次阅读 2021-03-16 10:01:03
    Sort (or order) a vector or factor (partially) into ascending or descending order. 排序: 以升序或者降序对向量或者因子进行排序 官方文档sort( )函数 函数语法: sort(x, decreasing = FALSE, na.last = NA,...
  • r语言——分段函数

    万次阅读 2018-04-22 18:19:46
    r语言——分段函数小例子:data &lt;- read.csv('人均人力资本指数.csv')———读入数据 s &lt;- data[,2] n &lt;- length(s) y &lt;- matrix(0,n,1) funx &lt;- function (s){ for(i in 1:n){...
  • vector的使用方法

    2018-12-04 09:47:57
    一、vector的构造函数 函数名 功能 vector() 无参构造 vector(size_type n, const value_type &amp;val = value_type()) 构造并初始化n个val vector(const vector&amp; x) 拷贝构造 ...
  • R语言中的常用函数

    千次阅读 多人点赞 2017-03-22 13:24:42
    语言的数学运算和一些简单的函数整理如下: 向量可以进行那些常规的算术运算,不同长度的向量可以相加,这种情况下最短的向量将被循环使用。   改变编译环境的语言(英语) Sys.setenv(LANGUAGE="en") ...
  • R语言函数2:predict()

    千次阅读 2021-08-22 18:15:27
    函数形式 predict (object, ...) 该函数是一个大类,其中还包含很多变体: [1] predict.ar* predict.Arima* predict.arima0* predict.glm [5] predict.HoltWinters* predict.lm predict.loess* ...
  • c( )函数--R语言

    千次阅读 2021-03-12 18:23:22
    函数功能: Combine Values into a Vector or List This is a generic function which combines its arguments. The default method combines its arguments to form a vector. All arguments are coerced to a ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,464
精华内容 13,385
关键字:

vector函数r语言