在R中应用3种方式频率表的列表
我有一个3种方式的频率表,我想把它们组合成一个列表,通常我写在R中应用3种方式频率表的列表,r,dataframe,lapply,R,Dataframe,Lapply,我有一个3种方式的频率表,我想把它们组合成一个列表,通常我写listOfTable这是最明显的方法 sapply(1:5, function(i) list(applyAlist[,,i])) 我们可以使用lappy来实现这一点,方法是在三维序列中循环,并根据序列对“applyAlist”进行子集设置 lapply(seq(dim(applyAlist)[3]), function(i) applyAlist[,,i]) 由于OP需要一个列表输出,lappy总是给出该输出。对于sapply,
listOfTable这是最明显的方法
sapply(1:5, function(i) list(applyAlist[,,i]))
我们可以使用lappy
来实现这一点,方法是在三维序列中循环,并根据序列对“applyAlist”进行子集设置
lapply(seq(dim(applyAlist)[3]), function(i) applyAlist[,,i])
由于OP需要一个列表
输出,lappy
总是给出该输出。对于sapply
,默认选项是simplify=TRUE
,因此在未将选项更改为simplify=FALSE
的情况下,当元素的长度相同时,它将返回一个矩阵
或向量
。如果列表
元素属于不同的类别
元素,这将变得更加明显,并且具有破坏性
lst <- list(a = 1:3, b = rep(letters[1:3], 2), c = 2:4)
lapply(lst, unique)
#$a
#[1] 1 2 3
#$b
#[1] "a" "b" "c"
#$c
#[1] 2 3 4
sapply(lst, unique)
# a b c
#[1,] "1" "a" "2"
#[2,] "2" "b" "3"
#[3,] "3" "c" "4"
给出了与lappy
类似的结果,因为我们更改了simplify
sapply(1:5,函数(i)列表(表[,i]))
FYI,数据。表与table
没有任何关系(我删除了标记)@Sotos,这很快,谢谢你可以使用lappy
即lappy(1:5,函数(i)applyAlist[,i])
@akrun,所以当我们使用lappy时,不要使用list(),如果您计划使用data.table方法,那么您应该意识到applyAlist对象有3个维度,data.tables只有2个维度。你应该说明你希望如何处理这个问题。。。作为一个单独的问题。除了他的代码没有创建名为table
的对象之外。
lst <- list(a = 1:3, b = rep(letters[1:3], 2), c = 2:4)
lapply(lst, unique)
#$a
#[1] 1 2 3
#$b
#[1] "a" "b" "c"
#$c
#[1] 2 3 4
sapply(lst, unique)
# a b c
#[1,] "1" "a" "2"
#[2,] "2" "b" "3"
#[3,] "3" "c" "4"
sapply(lst, unique, simplify = FALSE)
#$a
#[1] 1 2 3
#$b
#[1] "a" "b" "c"
#$c
#[1] 2 3 4