是否可以在readr
包中读取数据并在所有列中指定单个数据类型?类似于base::read.table
colClasses = "character"
或使用as.is
参数。
除非在分析之前很好地定义了任务,数据头,文件编码等,否则我更喜欢编写我的加载器而不更改数据类型,然后在下游处理模式。总是建议其他人如何思考事物。
答案 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 = ""))
}