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)
答案 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