我想以编程方式转换从文件读取的 R 数据框中列的类型。下面的示例已损坏。建议?
文件 foo.tsv:
x
1
2
被破坏的代码:
foo = read_tsv("foo.tsv")
foo[,'x'] <- as.integer(foo[,'x'])
错误:
Error: (list) object cannot be coerced to type 'integer'
在这种情况下read_tsv
已经返回一个整数,但我想编写一个传入列名的函数。
此代码有效:
foo$x <- as.integer(foo$x)
我不知道如何修改它以让我在变量中给出列名。
如果我将 foo 初始化为这样的数据框:
foo = data.frame(x=c("1", "2"))
然后原始foo[,x]
变体起作用,让我相信这是关于read_tsv
.
这显示了一堆东西:
> str(foo)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 2 obs. of 1 variable:
$ x: int 1 2
- attr(*, "spec")=List of 2
..$ cols :List of 1
.. ..$ x: list()
.. .. ..- attr(*, "class")= chr "collector_integer" "collector"
..$ default: list()
.. ..- attr(*, "class")= chr "collector_guess" "collector"
..- attr(*, "class")= chr "col_spec"
我正在使用 R 3.3.2 和 dplyr 0.5.0。