我在R中面临一些有线问题。当我尝试打印来自名为'谁'从CSV文件中打印出额外的信息(可能是垃圾),甚至不存在于文件中。以下是我从文件中读取的信息
bug_id who
1141327 dtownsend
1141327 dtownsend
1142623 wkocher
1142623 wkocher
1143179 jorge
1143179 jorge
1144222 dtownsend
1144222 dtownsend
1144493 markh
1144493 ryanvm
1144493 ryanvm
1144493 twalker
1145049 wkocher
代码是:
dataframe <- read.csv("try.csv", header = TRUE)
i <- 1
while(i < nrow(dataframe)) {
print(dataframe$who[i])
i <- i + 1
}
输出
[1] dtownsend
Levels: dtownsend jorge markh ryanvm twalker wkocher
[1] dtownsend
Levels: dtownsend jorge markh ryanvm twalker wkocher
[1] wkocher
Levels: dtownsend jorge markh ryanvm twalker wkocher
[1] wkocher
Levels: dtownsend jorge markh ryanvm twalker wkocher
[1] jorge
Levels: dtownsend jorge markh ryanvm twalker wkocher
答案 0 :(得分:2)
R具有名为factor
(read more here)的数据类型,导致此行为。 “级别”是允许值,是字符串的默认数据类型。解决方案相对简单:
dataframe <- read.csv("try.csv", header = TRUE, stringsAsFactors=FALSE)
## show datatypes
lapply(dataframe,class)
i <- 1
while(i < nrow(dataframe)) {
print(dataframe$who[i])
i <- i + 1
}
另一种解决方案是使用像readr
这样的软件包,以避免默认使用因素。
编辑:如果需要因素,您可以随时使用print(as.character())
进行打印,以使效果更好。