R readr single col_types

时间:2015-07-30 21:35:23

标签: r dplyr readr

是否可以在readr包中读取数据并在所有列中指定单个数据类型?类似于base::read.table colClasses = "character"或使用as.is参数。

除非在分析之前很好地定义了任务,数据头,文件编码等,否则我更喜欢编写我的加载器而不更改数据类型,然后在下游处理模式。总是建议其他人如何思考事物。

2 个答案:

答案 0 :(得分:6)

readr 0.2.2开始,我们可以做类似的事情来读取所有列为字符的csv:

$student = DB::table('students')
        ->leftJoin('attendance_student', 'students.id', '=', 'attendance_student.student_id')
        ->select('students.id', 'students.name', 'attendance_student.present')
        ->where('attendance_student.date', '=', '2015-10-14')
        ->get();

echo '<table>';
            foreach ( $student as $attendance ) 
            {
                echo "<tr>";
                echo "<td>$attendance->name</td>";
                echo "<td>$attendance->present</td></tr>";
            }
echo '</table>';

答案 1 :(得分:3)

将我的评论转换为答案。不,这不是内置的(此时),col_types的文档对其功能非常清楚,这不是其中之一。鉴于col_types的工作方式,实现此方法可能需要一个全新的参数,因为一个功能是“短”col_types将用于限制读取的列数。

但是,你可以编写一个包装器:

read_table_asis = function(...) {
    n_cols = ncol(read_table(..., n_max = 1))
    read_table(..., col_types = paste(rep("c", n_cols), collapse = ""))
}