如何在R函数中定义多个外部对象?

时间:2017-06-14 16:15:30

标签: r function environment

我真的不知道R功能是如何工作的!它不像matlab一样工作,我们可以返回并调用我们函数的许多对象吗?

我正在写一个函数,我需要有一个以上的结果,但它只返回一个。 我想知道R程序员如何编写这样的函数。例如:sort

> mean
function (x, ...) 
UseMethod("mean")
<bytecode: 0x0000000017c57d28>
<environment: namespace:base>

正如我们所见,我们可以调用两个外部对象(x:有序向量,ix:已排序向量的索引)

此外,我无法理解何时想要查看R中的书写函数,例如对于像#34;意思是&#34;这样的简单函数。我们有:

import com.google.gson.Gson;    
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;

public class DBresult {
    int countColumns;
    public ArrayList<String> columnLabels;
    public ArrayList<String[]> rows;
    public ArrayList<String> primaryKeys;
    public ArrayList<String> tablenameByColum;

    public static DBresult build(ResultSet set) throws SQLException {
        DBresult result = new DBresult();
        result.countColumns = set.getMetaData().getColumnCount();
        result.rows = new ArrayList<String[]>();
        result.columnLabels = new ArrayList<String>();
        result.tablenameByColum = new ArrayList<String>();
        String[] row;
        while (set.next()) {
            row = new String[result.countColumns];
            for (int i = 1; i <= result.countColumns; i++) {
                row[i-1] = set.getString(i);
            }
            result.rows.add(row);
        }
        ResultSetMetaData meta = set.getMetaData();
        for (int i = 1; i <= result.countColumns; i++) {
            result.columnLabels.add(meta.getColumnLabel(i));
            result.tablenameByColum.add(meta.getTableName(i));
        }

        return result;
    }

    @Override
    public String toString() {
        try {
            return new Gson().toJson(this);
        } catch (Exception e) {
            return null;
        }
    }

    public static DBresult fromString(String json){
        try {
            return new Gson().fromJson(json, DBresult.class);
        } catch (Exception e) {
            return null;
        }
    }
}

非常感谢

纳菲丝萨迪

1 个答案:

答案 0 :(得分:1)

以下是一个简单函数的示例,展示了如何返回包含多个项目的列表。

# Create the function
my.function <- function(){

  # Create some vectors
  obj1 <- c("Character", "Vector", "One")
  obj2 <- c("Character", "Vector", "Two")
  obj3 <- c("Character", "Vector", "Three")

  # Create empty list
  my.list <- list()

  # Assign objects to list
  my.list$o1 <- obj1
  my.list$o2 <- obj2
  my.list$o3 <- obj3

  # Return the list
  return(my.list)
}

# Call the function
list.from.function <- my.function()

# Inspect a specific item
list.from.function$o1