当前,我有一个很大的数据框,在其中我不一定知道所有行的名称,这些行以字符串的形式存储在第一列中(在这种情况下,是提供某些数据的国家/地区的名称)。我需要拿出数据来做其他事情,而我刚巧知道前56行具有我需要的所有名称,每行恰好有一次。
我以为我可以用for循环遍历这些名称的向量:
dat=read.csv("foo.csv",header=TRUE)
Names=character(56)
for (i in 1:56){Names[i]=dat[[i,1]]}
但是发生的是,我最终在Names中得到了一堆整数。当我运行str(dat$NAMES)
[我感兴趣的列]时,得到以下信息:
Factor with 56 levels "Angola", "Benin",...: 1 3 4 5 15 27 32 33 39 40 ...
这些似乎是我要获取的整数,但是我一辈子都无法弄清楚如何获取字符串。
答案 0 :(得分:0)
首先,问题是read.csv
在OP认为是字符向量的情况下在第一列中产生了一个因素。
我们可以在将数据加载到stringsAsFactors = FALSE
中的R设置read.csv
中时避免这种情况。
dat <- read.csv("foo.csv", header = TRUE, stringsAsFactors = FALSE)
#extract the first 56 entries from the first column
Names <- dat[1:56, 1]
如果没有stringsAsFactors = FALSE
选项,请使用as.character
将该矢量转换为character类型。
dat <- read.csv("foo.csv", header = TRUE, stringsAsFactors = TRUE)
#extract the first 56 entries from the first column
Names <- as.character(dat[1:56, 1])