这篇文章主要围绕计算矩阵中每一行的元素数量和计算矩阵中每一行的元素数量怎么算展开,旨在为您提供一份详细的参考资料。我们将全面介绍计算矩阵中每一行的元素数量的优缺点,解答计算矩阵中每一行的元素数量怎么算
这篇文章主要围绕计算矩阵中每一行的元素数量和计算矩阵中每一行的元素数量怎么算展开,旨在为您提供一份详细的参考资料。我们将全面介绍计算矩阵中每一行的元素数量的优缺点,解答计算矩阵中每一行的元素数量怎么算的相关问题,同时也会为您带来java – 如何计算与Streams匹配谓词的元素数量?、java-如何计算矩阵中最小和为[0,0]到[M,N]的路径?、javascript – 如何计算DOM中的元素数量?、javascript – 如何计算具有相同类的元素数量?的实用方法。
本文目录一览:- 计算矩阵中每一行的元素数量(计算矩阵中每一行的元素数量怎么算)
- java – 如何计算与Streams匹配谓词的元素数量?
- java-如何计算矩阵中最小和为[0,0]到[M,N]的路径?
- javascript – 如何计算DOM中的元素数量?
- javascript – 如何计算具有相同类的元素数量?
计算矩阵中每一行的元素数量(计算矩阵中每一行的元素数量怎么算)
另一种方法是使用TF version 1.12
:
sapply
您也可以使用df$n <- sapply(1:nrow(df),function(i) sum((df[i,] %in% c('A','B'))))
# COL1 COL2 COL3 n
# A A B <NA> 2
# B B B C 2
# C <NA> <NA> <NA> 0
# D B B B 3
# E <NA> <NA> C 0
# F A A C 2
获得相同的输出。只需将purrr::map_dbl
替换为sapply
。
您可以尝试使用base R
的{{1}}解决方案:
apply()
输出:
#Base R
df$Var <- apply(df,1,function(x) length(which(!is.na(x) & x %in% c('A','B'))))
使用了一些数据:
COL1 COL2 COL3 Var
A A B <NA> 2
B B B C 2
C <NA> <NA> <NA> 0
D B B B 3
E <NA> <NA> C 0
F A A C 2
或者如果您对#Data
df <- structure(list(COL1 = c("A","B",NA,"A"),COL2 = c("B",COL3 = c(NA,"C","C")),row.names = c("A","D","E","F"),)
感到好奇:
tidyverse
输出:
library(tidyverse)
#Code
df %>% mutate(id=1:n()) %>%
left_join(df %>% mutate(id=1:n()) %>%
pivot_longer(cols = -id) %>%
filter(value %in% c('A','B')) %>%
group_by(id) %>%
summarise(Var=n())) %>% ungroup() %>%
replace(is.na(.),0) %>% select(-id)
,
library(dplyr)
df <- structure(list(COL1 = c("A",)
df %>%
rowwise() %>%
mutate(sumVar = across(c(COL1:COL3),~ifelse(. %in% c("A","B"),0)) %>% sum)
# A tibble: 6 x 4
# Rowwise:
COL1 COL2 COL3 sumVar
<chr> <chr> <chr> <dbl>
1 A B NA 2
2 B B C 2
3 NA NA NA 0
4 B B B 3
5 NA NA C 0
6 A A C 2
java – 如何计算与Streams匹配谓词的元素数量?
public int getPlayersOnline() { int count = 0; for (Player player : players) { if (player.isActive()) { count++; } } return count; }
我尽可能地使用Java 8功能,我可以用lambdas来改进这个吗?
解决方法
return (int) players.stream().filter(Player::isActive).count();
java-如何计算矩阵中最小和为[0,0]到[M,N]的路径?
我需要使用矩阵的最小和求和来计算从[0,0]到[M,N]的路径?
我找到了这样的链接https://www.programcreek.com/2014/05/leetcode-minimum-path-sum-java/,但“动态编程”选项却根本不清楚.
我试图用BFS算法自己实现它,但这是一个缓慢的解决方案
public int minPathSum(final int[][] grid) {
if (grid.length == 1 && grid[0].length == 1) {
return grid[0][0];
}
final int[][] moves = {new int[]{1,0},new int[]{0,1}};
final Queue<int[]> positions = new arraydeque<>();
final Queue<Integer> sums = new arraydeque<>();
positions.add(new int[]{0,0});
sums.add(grid[0][0]);
int minSum = Integer.MAX_VALUE;
while (!positions.isEmpty()) {
final int[] point = positions.poll();
final int sum = sums.poll();
for (final int[] move : moves) {
final int x = point[0] + move[0];
final int y = point[1] + move[1];
if (x == grid.length - 1 && y == grid[0].length - 1) {
minSum = Math.min(minSum,sum);
} else if (x > -1 && y > -1 && x < grid.length && y < grid[0].length) {
positions.add(new int[]{x,y});
sums.add(sum + grid[x][y]);
}
}
}
return minSum + grid[grid.length - 1][grid[0].length - 1];
}
您能否解释一下,如果可能的话,您将如何解决?
这几乎是经典的动态编程问题.除第一个单元外,到达第一个单元的solution [y] [x]最多具有两个前身:选项1和选项2.假定我们知道到达每个单元的最佳解决方案,我们将选择哪个边?显然,这两种选择中更好的一种!
如果M保留给定值,则形式上稍微正式一点:
solution[0][0] = M[0][0]
// only one choice along
// the top horizontal and
// left vertical
solution[0][x] =
M[0][x] + solution[0][x - 1]
solution[y][0] =
M[y][0] + solution[y - 1][0]
// two choices otherwise:
// the best of option 1 or 2
solution[y][x] =
M[y][x] + min(
solution[y][x - 1],solution[y - 1][x]
)
我们可以看到我们可以创建一个适当的例程,例如使用for循环,以“自下而上”的顺序访问我们的解决方案矩阵的单元格,因为每个单元格的值取决于我们已经计算出的一个或两个前任.
JavaScript代码:
function show(M){
let str = '';
for (let row of M)
str += JSON.stringify(row) + '\n';
console.log(str);
}
function f(M){
console.log('Input:\n');
show(M);
let solution = new Array();
for (let i=0; i<M.length; i++)
solution.push(new Array(M[0].length).fill(Infinity));
solution[0][0] = M[0][0];
// only one choice along
// the top horizontal and
// left vertical
for (let x=1; x<M[0].length; x++)
solution[0][x] =
M[0][x] + solution[0][x - 1];
for (let y=1; y<M.length; y++)
solution[y][0] =
M[y][0] + solution[y - 1][0];
console.log('Solution borders:\n');
show(solution);
// two choices otherwise:
// the best of option 1 or 2
for (let y=1; y<M.length; y++)
for (let x=1; x<M[0].length; x++)
solution[y][x] =
M[y][x] + Math.min(
solution[y][x - 1],solution[y - 1][x]
);
console.log('Full solution:\n');
show(solution);
return solution[M.length-1][M[0].length-1];
}
let arr = [];
arr[0] = [0,7,-7];
arr[1] = [6,-8];
arr[2] = [1,2,0];
console.log(f(arr));
javascript – 如何计算DOM中的元素数量?
似乎没有任何我可以找到的教程,所以我认为这对SO来说是个好问题.
解决方法
var numOfElements = document.getElementsByTagName('*').length;
或者,在给定元素中查找这些元素:
var element = document.getElementById('demo'),numElems = element.getElementsByTagName('*');
javascript – 如何计算具有相同类的元素数量?
我的页面中有一个带有特定ID的主div.现在这个div中存在同一类的一些输入元素.那么如何使用jQuery计算这个div中同一类的这些元素的数量呢?
解决方法:
使用jQuery,您可以简单地使用
$('#main-div .specific-class').length
否则使用普通的js(包括IE8)你可以简单地写
document.querySelectorAll('#main-div .specific-class').length;
我们今天的关于计算矩阵中每一行的元素数量和计算矩阵中每一行的元素数量怎么算的分享就到这里,谢谢您的阅读,如果想了解更多关于java – 如何计算与Streams匹配谓词的元素数量?、java-如何计算矩阵中最小和为[0,0]到[M,N]的路径?、javascript – 如何计算DOM中的元素数量?、javascript – 如何计算具有相同类的元素数量?的相关信息,可以在本站进行搜索。
本文标签: