Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R如何以与DataFrame Factor列相同的方式将因子列表传递给函数_R - Fatal编程技术网

R如何以与DataFrame Factor列相同的方式将因子列表传递给函数

R如何以与DataFrame Factor列相同的方式将因子列表传递给函数,r,R,我有一个函数,可以在包含一个factor列的数据帧的切片上很好地运行。 我希望能够在手动指定的因子列表(或某些其他结构)上运行此功能。然而,我似乎不能创造一个论点,我可以参考相同的方式。 我必须使用[]引用列表,但dataframe列使用[] e、 g.我希望能够传递此消息,但函数需要[[]]作为其列表列表 list(NXT,NXT)[1] [[1]] [1] NXT Levels: NXT NYT 类似rep的东西可以创建正确的数据形式,但我不能轻易地指定任意列表 rep(NXT,2)[1]

我有一个函数,可以在包含一个factor列的数据帧的切片上很好地运行。 我希望能够在手动指定的因子列表(或某些其他结构)上运行此功能。然而,我似乎不能创造一个论点,我可以参考相同的方式。 我必须使用[]引用列表,但dataframe列使用[]

e、 g.我希望能够传递此消息,但函数需要[[]]作为其列表列表

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