r - 我无法将数组中的向量而不是整个数组称为单个向量
问题描述
我正在创建一个包含一万个向量的数组,其中每个向量有 4 个字符向量,可以是“赢”或“输”。
然后,如果每个向量中的任何一个字符向量为“win”,我想调用每个单独的向量并使用“any”函数返回 TRUE,否则返回 false。AKA 如果向量是 c("lose", "lose", "lose", "lose"),则返回 FALSE,否则返回 TRUE。
我当然希望一次完成这一切,我认为这可以通过将向量数组传递给“any”函数并返回一个数组来完成,就像其他一些函数允许的那样,或者通过使用“apply”带有数组和“any() == TRUE”参数的函数。
B <- 10000
set.seed(1)
a <- replicate(B, sample(c("lose","win"), 4, replace = TRUE, prob = c(0.6, 0.4)))
选项1
celtic_wins <- any(a[,1:10000] == "win")
或者
选项 2
celtic_wins <- apply(a, any() == "win")
在这两种情况下实际发生的情况(我认为但不能确定)是数组被解析为向量的向量,然后 r 将其视为单个 40,000 元素长的向量,检查是否存在单个“win”字符向量在整个批次中(类似于 99.99999999....% 的情况),因此返回单个 TRUE 语句,而不是 10,000 个布尔值。
如果是这种情况,我不知道如何解决;请帮忙?
解决方案
您可以通过检查总和是否为正来查看是否'win'
是列的一部分。将给出一个与 具有相同维度的矩阵,如果对应的元素是,则其元素等于,否则。创建一个向量,其第 i 个元素是矩阵中第 i 列的总和。x
x == 'win'
a == 'win'
a
TRUE
a
'win'
FALSE
colSums(a == 'win')
a == 'win'
colSums(a == 'win') > 0
推荐阅读
- javascript - 作用域链和闭包的区别
- sql-server - SQL Server ODBC“TCP 提供程序:错误代码 0x274C”
- sql-server - 加入 charindex 很慢
- vba - Recordset.AddNew 上带有预定义数组的错误 3001
- react-native - 我的登录屏幕中的错误“找不到变量”
- colors - 色轮的圆形饱和亮度渐变
- json - jq - 过滤不包含的实例不起作用
- python - 将 TensoBoard 与 TPU 一起使用时出现 UnimplementedError
- extjs - 动态更改 TinyMCE content_style
- python - 训练Doc2Vec模型后准确率低