如何在R函数中将列表用作参数

时间:2018-06-27 07:02:21

标签: r

myfunction<-function(x){if (x=="g"){g_var<-x g_nvar<-length(g_var)} return(g_nvar)}

我已经编写了上面的脚本来从列表中获取特定元素。当我调用此函数时,参数x将是一个列表,但是R不会将x视为列表。如何编写一个函数,以便在提供列表时输出的内容是我在函数中指定的元素?

m  
[[1]]
[[1]] [[1]]
[1] "g" "g" "h" "g" "g" "g" "k" "l" 

[[2]]
[[2]] [[1]]
[1] "g" "h" "k" "k" "l" "g"

预期结果

[[1]] 5       # No. of g

[[2]] 2       # No. of g

同样,我也想获得h,k和l的数字。我在调用函数时将m设置为x。

例如:-我的功能(m)

1 个答案:

答案 0 :(得分:0)

您的情况有些复杂,因为您的m不仅是字符向量列表,而且在您的示例中,是由1个字符向量组成的2个列表的列表,这将由< / p>

m = list(strsplit("gghgggkl", ""), strsplit("ghkklg", ""))

如果我们希望myfunction在此数据结构上进行操作,则必须使用操作[[1]](请参阅下面的x[[1]])来引用length-1列表的组成部分,并且,正如loki建议的那样,我们可以使用lapply处理外部列表的所有组件,并使用sum和一个逻辑表达式来获得所需的计数:

myfunction = function(m) lapply(m, function(x) sum(x[[1]]=='g'))
myfunction(m)

结果:

[[1]]
[1] 5

[[2]]
[1] 2