R数据帧,混合类型返回整数而不是字符串

R数据帧,混合类型返回整数而不是字符串,r,R,我有一张表格,里面有不同的屏幕类型。其中一列的类型为string,另一列的类型为integer。 我想逐行检索内容,但我不知道如何告诉R列是我想作为字符串重设的字符串。下面是一个简单的运行示例: # create small toy dataset a=c("label1", 3, 56, "foo") b=c("label2", 1, 2, "bar") d=as.data.frame(rbind(a,b)) # in my original code I have a data.frame

我有一张表格,里面有不同的屏幕类型。其中一列的类型为string,另一列的类型为integer。 我想逐行检索内容,但我不知道如何告诉R列是我想作为字符串重设的字符串。下面是一个简单的运行示例:

# create small toy dataset
a=c("label1", 3, 56, "foo")
b=c("label2", 1, 2, "bar")
d=as.data.frame(rbind(a,b)) # in my original code I have a data.frame

# retrieve a row
e = d[1,]
# take the first column: all is OK
e[1]
# the unexpected stuff:
type(e[1]) # I expected "character" but obtain "list"
unlist(e)  # I expected something like "label1"
as.character(e[1]) # I expected something like "label1"

有人能告诉我发生了什么,我该如何纠正吗?

当您执行
e[1]
时,您选择的是一个带有一列的
data.frame
。尝试执行
类(e[1])
。执行
e[,1]
操作时,您只选择了列。之所以
typeof(e[1])
返回一个
list
是因为
data.frame
本质上是一个列表。尝试读取
?data.frame
,并且向量
a
b
都将是字符。不能在简单的向量中存储混合类。此外,您应该真正使用
class()
来确定对象的行为。