如何将dataframe中的值转换为对象

如何将dataframe中的值转换为对象,r,dataframe,R,Dataframe,对于我正在编写的函数,输出是一个数据帧。但是,如何将数据帧的某列中的值分配给对象呢 例如,如果我有两个向量,我将它们绑定到一个数据帧中 >numbers<-c(33, 44, 55, 66) >names<-c("A", "B", "C", "D") >MYdataframe<-data.frame(cbind(names, numbers)) 但是如何将数字(例如33)分配给对象(例如A)如果您真的想将字符值用作数字向量的名称,并将数字值用作“名称”,则可

对于我正在编写的函数,输出是一个数据帧。但是,如何将数据帧的某列中的值分配给对象呢

例如,如果我有两个向量,我将它们绑定到一个数据帧中

>numbers<-c(33, 44, 55, 66)
>names<-c("A", "B", "C", "D")
>MYdataframe<-data.frame(cbind(names, numbers))

但是如何将数字(例如
33
)分配给对象(例如
A

如果您真的想将字符值用作数字向量的名称,并将数字值用作“名称”,则可以这样做:

names(numbers) <- names
 numbers
# A  B  C  D 
#33 44 55 66 
 numbers["A"]
#  A 
# 33 

names(numbers)如果您真的想使用字符值作为名称,而数字值作为数字向量的“名称”,那么可以这样做:

names(numbers) <- names
 numbers
# A  B  C  D 
#33 44 55 66 
 numbers["A"]
#  A 
# 33 

names(numbers)这看起来不是一个好主意:您的函数将在全局环境或其父环境中分配变量,而不是返回某些内容。如果要返回多个值,可以将它们放在一个命名列表中,例如,
列表(a=3.14,B=2.71)
,如果它们都具有相同的类型,则可以将它们放在一个向量中(如果可以将它们放在data.frame中,则可以)

此外,在您的示例中,
cbind
将数字转换为因子:我不确定这是有意的

但是,如果您确实坚持,这可以通过
分配
来完成

library(plyr)
d_ply( MYdataframe, "names", function(u) 
  assign( as.character(u$names[1]), u$numbers, envir=.GlobalEnv) 
) 

这看起来不是一个好主意:您的函数将在全局环境或其父环境中分配变量,而不是返回某些内容。如果要返回多个值,可以将它们放在一个命名列表中,例如,
列表(a=3.14,B=2.71)
,如果它们都具有相同的类型,则可以将它们放在一个向量中(如果可以将它们放在data.frame中,则可以)

此外,在您的示例中,
cbind
将数字转换为因子:我不确定这是有意的

但是,如果您确实坚持,这可以通过
分配
来完成

library(plyr)
d_ply( MYdataframe, "names", function(u) 
  assign( as.character(u$names[1]), u$numbers, envir=.GlobalEnv) 
) 

你用什么编程语言写的?请相应地标记问题。您用什么编程语言编写?请相应地标记问题。+1强烈建议谨慎。R没有认真检查用户是否会对作业做坏事。+1警告是非常受鼓励的。R没有认真检查用户是否会对分配做坏事。