如何将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没有认真检查用户是否会对分配做坏事。