如何在R语言中用apply等函数替代for循环

Python08

如何在R语言中用apply等函数替代for循环,第1张

函数主体可以是一系列表达式,这些表达式需要用大括号括起来:function(param1,,paramN){expr1exprM}讨论函数的定义告诉R软件“用何种方式进行计算”。例如,R软件没有内置计算变异系数的函数,因此你可以定义函数如下:>cvcv(1:10)[1]0.5504819第一行定义了名为cv的函数,第二行引用该函数,以1∶10作为其参数x的值。函数对参数应用函数主体中的表达式sd(x)/mean(x)进行计算并返回结果。定义函数后,我们可以在任何需要函数的地方应用它,例如可以作为lapply函数的第二个参数(参见方法6.2):>cvlapply(lst,cv)函数主体如果包含多行表达式,则需要使用大括号来确定函数内容的起始和结束位置。下面这一函数采用了欧几里德算法计算两个整数的最大公约数:>gcdlapply(lst,function(x)sd(x)/mean(x))由于本书重点不在于介绍R的编程语言,这里不对R函数编程的细微之处进行解释。下面给出几个需要注意的地方:返回值所有函数都有一个返回值,即函数主体最后一个表达式值。你也可以通过return(expr)命令给出函数的返回值。值调用函数参数是“值调用”——如果你改变了函数中的参数值,改变只是局部的,并不会影响该参数所引用的变量值。局部变量你可以简单地通过赋值来创建一个局部变量,函数结束后该局部变量会消失。条件执行R语法中包含if语句,详情可以使用help(Control)命令查看。循环语句

r语言dim函数怎么用计算数组的行数和列数 dim

POST方式 方式传递参数

//和GET方式一样,先将参数放入List

params = new LinkedList<BasicNameValuePair>()

params.add(new BasicNameValuePair("param1", "Post方法"))//增加参数1

params.add(new BasicNameValuePair("param2", "第二个参数"))//增加参数2

try {

HttpPost postMethod = new HttpPost(baseUrl)//创建一个post请求

postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8"))//将参数填入POST Entity中

HttpResponse response = httpClient.execute(postMethod)//执行POST方法

Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode())//获取响应码

Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"))//获取响应内容

} catch (UnsupportedEncodingException e) {

e.printStackTrace()

} catch (ClientProtocolException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

}

public static void main(String[] args) {// 创建一个长度为10的数组int[] is = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }// 打印print(is)// 设定从命令行读入数据Scanner scanner = new Scanner(System.in)// 一直等待输入直到主动中职while (scanner.hasNext()) {int input = scanner.nextInt()is = remove(is, input)print(is)}}/*** 从数组中找出这个数并干掉,然后返回新的数组** @param is* @param input*/private static int[] remove(int[] is, int input) {// 因为返回数组长度未知,所以使用动态数组ArrayList<Integer>list = new ArrayList<Integer>()for (int index = 0index <is.lengthindex++) {if (is[index] != input)list.add(is[index])}// 复制到并返回int[] is_return = new int[list.size()]for (int index = 0index <list.size()index++) {is_return[index] = list.get(index).intValue()}return is_return}/*** 为便于调试,打印每次变动后的数组** @param is*/private static void print(int[] is) {System.out.println("print array")for (int i : is) {System.out.print(i + " ")}System.out.println("\r\nprint array end")}0无帮助