我目前正在开发一个包,用于在 R 中生成视觉能力评估项目。这些项目通常以构图开始,然后以某种方式转换构图元素以创建新构图。我需要知道的是,是否存在替代变换会导致相同的组合。以数学方式检查每个构图的潜在选项,并查看构图对于某些变换是否不变(例如,圆不能旋转),或者不同的变换是否会导致相同的结果(例如,等边三角形旋转 180 度与翻转相同)似乎太累了由于许多潜在的组合。
因此,我想知道 R 中是否有可用的方法来检查两个图是否相同?
假设我们有两组命令,它们都生成正方形:
plot(c(0,1), c(0,1), type='n')
lines(c(.15,.85,.85,.15,.15),c(.15,.15,.85,.85,.15))
plot(c(0,1), c(0,1), type='n')
rect(.15,.15,.85,.85)
Run Code Online (Sandbox Code Playgroud)
是否有任何工具可用于对两个图形渲染进行逐像素比较?
我不是想重新发明轮子.只需查找搜索字符串或字符串向量的函数,并为找到匹配项的每个元素返回true.这是我到目前为止所尝试的.
grepl(x::String, y) = length(search(x, y)) > 0
grepl(x::Vector{String}, y) = length.(search(x, y)) .> 0
grepl(x::Vector{AbstractString}, y) = length.(search(x, y)) .> 0
Run Code Online (Sandbox Code Playgroud)
用法示例:
v = string.('a':'z')
x = rand(v, 100) .* rand(v, 100) .* rand(v, 100)
grepl(convert(Vector{String}, x), "z")
Run Code Online (Sandbox Code Playgroud)
好吧,如果我能让我的类型正常工作,这将是一个有效的例子.基本上我可以使用return来仅选择其中包含的元素"z".
我试图将多个参数传递给Julia中的内置管道操作符|>.
我想要一些像这样的东西:
join([randstring() for i in 1:100], " ")
Run Code Online (Sandbox Code Playgroud)
但是,使用管道运算符,我得到一个错误:
[randstring() for i in 1:100] |> join(" ")
Run Code Online (Sandbox Code Playgroud)
我很确定这是多分派的一个特性,连接有自己的方法,delim在join(strings, delim, [last])方法中被定义为delim=""省略时.
我理解正确吗?有工作吗?
对于什么是值得的,我对管道的大多数使用最终都需要不止一个论点.例如:
[randstring() for i in 1:100] |> join(" ") |> replace("|", " ")
Run Code Online (Sandbox Code Playgroud) 我有兴趣编写一个函数来将数字转换为Julia中的单词.如f(1234)返回"one thousand two hundred and thirty-four".
我不知道如何提取每个数字并将其转回数字.以下作品,但它非常难看.谢谢
x = 123456789
digits = split("$x","")
intx = zeros(length(digits))
for i=1:length(digits) intx[i]=int(digits[i]) end
intx
Run Code Online (Sandbox Code Playgroud) 我试图从文本段落中删除任何一个或两个字母的单词.这是我的第一个念头
gsub(" [a-zA-Z]{1,2} ", " ", "a ab abc B BB BBB")
[1] "a aaa BB BBBB"
Run Code Online (Sandbox Code Playgroud)
我可以看到"a"是如何不被替换的,因为它不带空格,我可以看到"BB"是如何被替换的,因为它所引导的空间已经被"B"抓住了.
我想要一个与cumsum等效的函数,但不是加起来它计算到目前为止唯一值的数量.我可以为每个潜在的集合编写一个循环,但由于我的数据集有数百万的观察结果,这似乎会耗费时间.
例:
a <- c(1,3,2,4,1,5,2,3)
f(a)
[1] 1 2 3 4 4 5 5 5
Run Code Online (Sandbox Code Playgroud) 我想基于 a 定义一个新列,该列之后未链接到原始列。
using DataFrames
x = DataFrame(a=1:3)
x.b = x.a
x.b[1] += 1
Run Code Online (Sandbox Code Playgroud) 在 Julia 中构建新的rename和之间有什么区别吗?我相信一般来说修改现有对象是理想的,因为它修改其参数而不在内存中生成新对象。rename!DataFrameDataFrame rename!
但由于内存中尚不存在任何对象似乎rename是合适的。
using DataFrames
df1 = rename( DataFrame(rand((100,2))), [:x1, :x2], [:x, :y])
df2 = rename!(DataFrame(rand((100,2))), [:x1, :x2], [:x, :y])
# Ideal formulation not using rename (currently no matching method)
df0 = DataFrame(rand((100,2)), [:x, :y])
Run Code Online (Sandbox Code Playgroud) 在 Julia 中检测和删除数组中重复行的最佳方法是什么?
x = Integer.(round.(10 .* rand(1000,4)))
# In R I would apply the duplicated function.
x = x[duplicated(x),:]
Run Code Online (Sandbox Code Playgroud) 我想检查一个向量中的元素是否包含在另一个向量中。R 中有运算符%in%。
例如,操作员将执行以下操作:
[1,3,5,7,9,4] %in% [1,2,4,5,8,9,10,11]
# [true,false,true,false,true,true]
Run Code Online (Sandbox Code Playgroud)
我可以轻松地编写自己的代码,只是我不想重新发明轮子。