R如何以与DataFrame Factor列相同的方式将因子列表传递给函数
我有一个函数,可以在包含一个factor列的数据帧的切片上很好地运行。 我希望能够在手动指定的因子列表(或某些其他结构)上运行此功能。然而,我似乎不能创造一个论点,我可以参考相同的方式。 我必须使用[]引用列表,但dataframe列使用[] e、 g.我希望能够传递此消息,但函数需要[[]]作为其列表列表R如何以与DataFrame Factor列相同的方式将因子列表传递给函数,r,R,我有一个函数,可以在包含一个factor列的数据帧的切片上很好地运行。 我希望能够在手动指定的因子列表(或某些其他结构)上运行此功能。然而,我似乎不能创造一个论点,我可以参考相同的方式。 我必须使用[]引用列表,但dataframe列使用[] e、 g.我希望能够传递此消息,但函数需要[[]]作为其列表列表 list(NXT,NXT)[1] [[1]] [1] NXT Levels: NXT NYT 类似rep的东西可以创建正确的数据形式,但我不能轻易地指定任意列表 rep(NXT,2)[1]
list(NXT,NXT)[1]
[[1]]
[1] NXT
Levels: NXT NYT
类似rep的东西可以创建正确的数据形式,但我不能轻易地指定任意列表
rep(NXT,2)[1]
[1] NXT
Levels: NXT NYT
当然,有一个明显的方法来创建它,就像rep在内部做一样
评论后进行充分澄清
> mydata
col1 col2
1 1 A
2 2 B
3 3 C
一些别名
A<-mydata$col2[1]
B<-mydata$col2[2]
C<-mydata$col2[3]
2重复调用传递相同的数据类型
tfun(rep(A,2))
Factor w/ 3 levels "A","B","C": 1 1
[1] 2
3但是打电话给列表是不同的
tfun(list(A,B))
List of 2
$ : Factor w/ 3 levels "A","B","C": 1
$ : Factor w/ 3 levels "A","B","C": 2
[1] 2
4带有向量的调用将丢失因子信息
tfun(c(A,B))
int [1:2] 1 2
[1] 2
问题是如何使用任意的“列表/集合”因子调用现有函数,但传递与1和2相同的数据类型。(2)显示数据结构存在,但它是什么?我如何轻松创建它?深入“rep”的来源,可以创建解决问题的结构
structure(c(A,B), class = class(A) , levels = levels(A) )
所以
这给了我想要的,但仍然想知道是否有更好/更正常的语法。你能提供一个可复制的示例来说明你正在尝试做什么吗?Data.frames是列表,因此“我必须使用[[]引用列表,但dataframe列使用[]”的语句是错误的,或者值得澄清。例如,
cars
是一个data.frame(列表),而cars[“speed”]
返回一个data.frame(列表)。要返回向量(列表项),您必须使用cars[[“speed”]]
。查看“rep”的源代码,并可以用t1 t1[1]ab Levels:ab C复制它,因此我可以解决它,但有更好更正常的语法吗?
tfun(c(A,B))
int [1:2] 1 2
[1] 2
structure(c(A,B), class = class(A) , levels = levels(A) )
str(structure(c(A,A), class = class(A) , levels = levels(A) ))
Factor w/ 3 levels "A","B","C": 1 1