我想以编程方式转换从文件读取的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。