从R中的read_tsv转换列类型?

时间:2017-03-27 17:00:16

标签: r dplyr readr

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

0 个答案:

没有答案