我有以下列表
A = list(c(1,2,3,4), c(5,6,7,8), c(4,6,2,3,1), c(6,2,1,7,12, 15, 16, 10))
A
[[1]]
[1] 1 2 3 4
[[2]]
[1] 5 6 7 8
[[3]]
[1] 4 6 2 3 1
[[4]]
[1] 6 2 1 7 12 15 16 10
我想检查每个列表中是否存在元素2
。如果存在,那么我需要将1
分配给相应的列表。
谢谢。
答案 0 :(得分:1)
@jasbner的评论可以进一步完善为
1 * sapply(A, `%in%`, x = 2)
# [1] 1 0 1 1
在这种情况下,sapply
返回逻辑向量,然后将TRUE
乘以1
到FALSE
,然后将x %in% table
乘以0。此外,语法为{{ 1}},我们可以避免定义匿名函数function(x) 2 %in% x
,而改为如上所述。最后,使用sapply
而不是lapply
返回一个向量,而不是列表,这似乎是您要追求的。
答案 1 :(得分:1)
这是一个可以替换的简单版本!
import React, { Component } from "react";
import SweetAlert from "react-bootstrap-sweetalert";
import ReactDOM from "react-dom";
export default class HelloWorld extends Component {
constructor(props) {
super(props);
this.state = {
alert: null,
button: "active"
};
}
showAlert() {
const getAlert = () => (
<SweetAlert
show={this.state.show}
showCancel
onConfirm={() => this.hideAlert("disabled")}
onCancel={() => this.hideAlert("active")}
>
Are you sure?
</SweetAlert>
);
this.setState({
alert: getAlert()
});
}
hideAlert(text) {
this.setState({
alert: null,
button: text
});
}
render() {
return (
<div style={{ padding: "20px" }}>
<button onClick={() => this.showAlert()}>
{this.state.button}
</button>
{this.state.alert}
</div>
);
}
}
ReactDOM.render(<HelloWorld />, document.getElementById("app"));
答案 2 :(得分:1)
这里是tidyverse
library(tidyverse)
map_lgl(A, `%in%`, x = 2) %>%
as.integer
#[1] 1 0 1 1