R 数据框中的数值

R 数据框中的数值,r,dataframe,R,Dataframe,我有以下数据框,我使用它调用列p.inits中所有值的函数,并使用cols中的相应颜色绘制它们 p.inits = c(0.5, 0.1, 0.9) cols = c("red", "green", "blue") data = data.frame(cbind(p.inits, cols)) foo = function (x) { print(1:x) } for (i in 1:nrow(data)) { print(data$p.inits[i] } 函数foo显示某些东西没有

我有以下数据框,我使用它调用列
p.inits
中所有值的函数,并使用
cols
中的相应颜色绘制它们

p.inits = c(0.5, 0.1, 0.9)
cols = c("red", "green", "blue")
data = data.frame(cbind(p.inits, cols))

foo = function (x) { print(1:x) }

for (i in 1:nrow(data)) {
  print(data$p.inits[i]
}
函数
foo
显示某些东西没有按我预期的方式工作,因为输出是:

[1] 1 2
[1] 1
[1] 1 2 3
另外,
p.inits
的计算结果为
[1]0.50.10.9
,而
数据$p.inits
的计算结果为该系数:

[1] 0.5 0.1 0.9
Levels: 0.1 0.5 0.9
我的问题是:在上帝的绿色地球上发生了什么?为什么列
p.inits
不是数字?我只想访问值
0.5、0.1、0.9

as.numeric(as.vector(data$p.inits))
实现了这一点,但这似乎过于复杂了。这真的是正确的方法吗


谢谢。

创建
data.frame
最好是使用
data.frame
单独调用,而不是使用
cbind
转换到
matrix
,然后转换到
data.frame
。问题在于
矩阵
如何存储元素,因为在
矩阵
中通常只允许一个
。这里有一个
character
列,因此我们将所有元素转换为
character
。当我们转换为
data.frame
时,默认选项
stringsAsFactors=TRUE
字符
类转换为
因子
,这就是我们拥有所有
因子
类的原因

data <- data.frame(p.inits, cols)

不要执行
data.frame(cbind
),只需执行
data.frame即可(p.inits
。您首先使用
cbind
转换为矩阵,当转换为
data.frame
时,
字符
类更改为
因子
,默认情况下
stringsafactors=TRUE
并获得解决我问题的
因子
类。谢谢如果你把这个作为回答,我会接受的。
data <- data.frame(p.inits, cols, stringsAsFactors= FALSE)