gpt4 book ai didi

r - 有时使用矢量会起作用-R

转载 作者:行者123 更新时间:2023-12-02 07:18:26 24 4
gpt4 key购买 nike

为什么这个例子有效:

which(letters %in% c('j', 'e', 'f', 'f', 'r', 'e', 'y'))

但是;这个没有?

name <- c(strsplit("jeffrey", ""))
which(letters %in% name)

这不是一回事吗,因为在这两个实例中,哪个函数中的第二个参数是向量?

最佳答案

问题是 strsplit 仍然是 length 1 的 list,第一个元素是 vector

strsplit("jeffrey", "")
#[[1]]
#[1] "j" "e" "f" "f" "r" "e" "y"

c 包装不会改变默认情况下的场景 recursive = FALSE

c(strsplit("jeffrey", ""))
#[[1]]
#[1] "j" "e" "f" "f" "r" "e" "y"

更改 recursive = TRUE 可以将 list 转换为 vector

c(strsplit("jeffrey", ""), recursive = TRUE)
#[1] "j" "e" "f" "f" "r" "e" "y"

如果我们使用 unlist(如@JohnyCrunch 的解决方案),它将取消列出 list,因为默认情况下 recursive = TRUE 并转换为 向量。在我们的例子中,另一种方法是使用 [[ 提取 list 元素(因为它只是 length< 的 list/ 1.

name <- strsplit("jeffrey", "")[[1]]
which(letters %in% name)
#[1] 5 6 10 18 25

关于r - 有时使用矢量会起作用-R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com