用fread加载文件

时间:2016-03-05 09:31:24

标签: r

我尝试仅从文件夹中的所有csv文件加载第3列。每个文件有20,000行和4列,我想最终得到一个n(n =数字或文件;在这种情况下为6)列和20,000行的数据帧。我尝试使用public class FibonacciNumber { public static long fib(int n) { if (n <= 1) return n; else return fib(n-1) + fib(n-2); } public static void main(String[] args) { int N = Integer.parseInt(args[0]); System.out.println(N); for (int i = 1; i <= N; i++) System.out.println(i + ": " + fib(i)); } } 指定要加载的列,但没有成功。此外,我无法创建n列而不是4列(其中每列代表在所有文件中找到的一个变量)。我试图获得一个6 * 20,000的数据框,其中每列代表每个文件的指定变量(每个文件的第3列)。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

就像我在评论中所说的那样,您可以使用select的{​​{1}}或drop个参数。

另一种解决方案是读取文件fread并使用sapply的{​​{1}}参数创建id列。接下来,您将数据集重新整形为宽格式,如下所示(为此需要data.table 1.9.7):

idcol

结果是一个数据表,其中使用的文件名为列名。

答案 1 :(得分:1)

尝试使用select fread参数来保留列,或drop不读取列,而不是colClasses。 (使用data.table 1.9.6

类似的东西:

ltab <- lapply(files, fread, header=TRUE, select = 3, nrows=r))

您应该获得包含20000行和1列

的6个表的列表

然后Tab <- do.call("cbind", ltab)应该有用。