如何检查列表是否包含R中的某个元素

时间:2018-10-31 14:44:42

标签: r list

我有以下列表

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分配给相应的列表。

谢谢。

3 个答案:

答案 0 :(得分:1)

@jasbner的评论可以进一步完善为

1 * sapply(A, `%in%`, x = 2)
# [1] 1 0 1 1

在这种情况下,sapply返回逻辑向量,然后将TRUE乘以1FALSE,然后将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