我正在尝试编写一个函数,以便对于给定的列表,该函数返回每个元素的所有位置,并按升序对元素的频率进行排序。然后将dim()应用于一组性别:F F M M M M I I F I F M I F M I I M I I F 其中F,M和I分别代表女性,男性和婴儿。
我的代码如下:
dim <- function(f){
y <- unlist(f)
x <- list()
for (i in 1:length(y)){
g1 <- y[i]
x[[g1]] <- c(x[[g1]],i)
} freq <- sapply(x, length)
z <- sort(freq, decreasing = T)
lst <- list(x, z)
return(lst)
}
gender <- list("F", "F", "M", "M", "M", "M", "I", "I", "F", "I", "F", "M", "I", "F", "M", "I", "I", "M", "I", "I", "F")
dim (gender)
我收到错误消息。
预先感谢
答案 0 :(得分:-1)
在freq
部分之前可能只需要换行:
dim <- function(f){
y <- unlist(f)
x <- list()
for (i in 1:length(y)){
g1 <- y[i]
x[[g1]] <- c(x[[g1]],i)
}
freq <- sapply(x, length) # on new line after curly bracket above
z <- sort(freq, decreasing = T)
lst <- list(x, z)
return(lst)
}
gender <- list("F", "F", "M", "M", "M", "M", "I", "I", "F", "I", "F", "M", "I", "F", "M", "I", "I", "M", "I", "I", "F")
dim (gender)
[[1]]
[[1]]$F
[1] 1 2 9 11 14 21
[[1]]$M
[1] 3 4 5 6 12 15 18
[[1]]$I
[1] 7 8 10 13 16 17 19 20
[[2]]
I M F
8 7 6