我对R中的这种行为感到困惑.我只是想对strsplit生成的字符串列表进行简单的字符串比较.所以不明白为什么下面的前两个代码片符合我的预期,而第三个不是.
> for (i in strsplit("A text I want to display with spaces", " ")) { print(i) }
[1] "A" "text" "I" "want" "to" "display" "with" "spaces"
Run Code Online (Sandbox Code Playgroud)
好的,这很有道理......
> for (i in strsplit("A text I want to display with spaces", " ")) { print(i=="want") }
[1] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)
好的,这也是.但是,以下结构有什么问题?
> for (i in strsplit("A text I want to display with spaces", " ")) { if (i=="want") print("yes") }
Warning message:
In if (i == …Run Code Online (Sandbox Code Playgroud) 我有一个简单的F#以下类型的记录数组(或依赖于系统类型的一些小变化):
type Transaction= {
date: DateTime;
amount: float;
mutable details: string }
Run Code Online (Sandbox Code Playgroud)
我想将它们显示到Winforms中的DataGridView控件,包括支持更改内容,添加或删除行/记录.将DataViewGrid绑定到记录数组似乎不允许添加/删除行(或者我必须做错了吗?).但是,DataTable结构似乎更适合此目的.创建上述类型的DataTable似乎与原始记录类型完全匹配,例如:
let dataTable = new DataTable()
dataTable.Columns.Add("date", typeof<DateTime>) |> ignore
dataTable.Columns.Add("amount", typeof<float>) |> ignore
dataTable.Columns.Add("details", typeof<string>) |> ignore)
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有一个现有的系统函数将依赖于系统类型的任何类型的记录转换为记录数组(例如,键入"事务数组")到相应的DataTable中,反之亦然?如果没有这样的功能,怎么能以简洁的方式完成呢?