在以下代码中,m!!i!!j
代表什么?任何例子都会有所帮助。
matrixElements :: [[t]] -> [t]
matrixElements m =
[m!!i!!j | i<-[0..length m - 1],
j<-[0..length(head m) - 1],
even(i + j)]
main = assertEqual [1,3,5,7,9] $ matrixElements [[1,2,3], [4,5,6], [7,8,9]]
答案 0 :(得分:3)
这取决于导入的内容。 There are many functions named (!!)
最有可能是the one in Prelude
:
#Example data test <- structure(list(UserID = c("53017366", "53017366"), Q3_1 = c(3L, 3L), Q3_2 = c(2L, 2L), Q3_3 = c(3L, 3L), Q3_4 = c(NA, 5L)), class = "data.frame", row.names = c(NA, -2L), .Names = c("UserID", "Q3_1", "Q3_2", "Q3_3", "Q3_4")) #what I'd like to see, but doesn't work test %>% mutate(total = sum(starts_with("Q3"), na.rm = TRUE)) #What I'd like to end up with: UserID Q3_1 Q3_2 Q3_3 Q3_4 total 1 53017366 3 2 3 NA 8 2 53017366 3 2 3 5 13
列表索引(下标)运算符,从0开始。它是更通用的
genericIndex
的实例,它采用任何整数类型的索引。
一些简单的例子:
(!!) :: [a] -> Int -> a
"abcde" !! 2 == 'c'
["zero", "one", "two", "three"] !! 2 == "two"