【发布时间】:2018-07-17 21:32:45
【问题描述】:
我在循环中使用is.numeric,但它的行为似乎与我预期的不一样。
> for (d in strsplit("123","")){
> print(as.numeric(d))
> print(is.numeric(d))
> }
返回...
[1] 1 2 3
[1] FALSE
我希望它先评估“1”,然后是“2”,然后是“3”(与 as.numeric 评估每个字符的方式相同)每次打印出 FALSE(因为它们是字符而不是数字) .
为什么不是这样?
【问题讨论】:
-
strsplit返回一个向量列表,每个传入的值对应一个。这里你只传入“123”,所以你得到一个长度为 1 的列表,你可以传入多个字符串。好像你想要for (d in strsplit("123","")[[1]])