小编ags*_*udy的帖子

删除重复的2列排列

我找不到适合该问题的标题,请随时对其进行编辑。

我有这个数据

  section time to from
1       a    9  1    2
2       a    9  2    1
3       a   12  2    3
4       a   12  2    4
5       a   12  3    2
6       a   12  3    4
7       a   12  4    2
8       a   12  4    3
Run Code Online (Sandbox Code Playgroud)

我想删除具有相同tofrom同时的重复行,而不计算2列的排列:例如(1,2)和(2,1)是重复的。

因此最终输出将是:

  section time to from
1       a    9  1    2
3       a   12  2    3
4       a   12  2    4
6       a   12  3    4
Run Code Online (Sandbox Code Playgroud)

我有一个通过构造一个新的列键的解决方案,例如

  key <- paste(min(to,from),max(to,from)) …
Run Code Online (Sandbox Code Playgroud)

r duplicates dataframe

5
推荐指数
1
解决办法
1181
查看次数

r - xpathApply在XMLNodeSet上(带有XML包)

我试图在R中的XML包中使用xpathApply函数从html文件中提取某些数据.但是,在html文档的某些父节点上使用xpathApply后,生成的对象的类变为XMLNodeSet,我无法在此类对象上进一步使用xpathApply,因为出现此错误消息:"UseMethod("xpathApply")中的错误:没有适用于'xpathApply'的方法应用于类"XMLNodeSet"的对象"

这是我试图复制我的问题的R脚本(这个例子只是一个简单的表,我知道我可以使用readHTMLtable函数,但我需要使用更多的低级函数才能工作,因为我的实际html比这个简单更复杂表):

library(XML)
y <- htmlParse(htmlfile)
x <- xpathApply(y, "//table/tr")
z <- xpathApply(x, "/td")
Run Code Online (Sandbox Code Playgroud)

这是"htmlfile":

<table>
<tr>
<td> Test1.1 </td> <td> Test1.2 </td>
</tr>
<tr>
<td> Test1.3 </td> <td> Test1.4 </td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

使用xpathApply后,是否有任何方法可以在节点上进一步工作?或者还有其他好的替代方案可以解决节点中的数据吗?

html r web-scraping

5
推荐指数
1
解决办法
1万
查看次数

在R中生成栅格图

我正在尝试制作一个栅格图(如hovmoller图)并希望有人可以提供帮助.我看过rasterVis和其他一些人的帮助,但似乎无法得到他们的例子来适应我的数据,这可能需要以某种方式改变我的想法.我已设法创建绘图,但单元格的填充值与原始数据不对应.我复制了一个我的数据框示例的dput()文件(希望这是正确的方法).我想要的是沿着x轴的一年中的几天(DOY),每个DOY上方有一个48个矩形轴(DF中的小时列).这些矩形代表每个DOY的半小时间隔,并根据它们对应的值(DF中的qc列)(0,1或2)进行着色.

到目前为止,我已经提出了以下代码,但是对于颜色分配z值(qc列)似乎存在问题,我认为由于某种原因,值没有正确排列...

mcol <- c("green","blue","red")
x=unique(DF[,"DOY"])
y=unique(DF[,"hour"])
z=matrix(DF[,"qc"],nrow=length(unique(DF[,"DOY"])),
                     ncol=length(unique(DF[,"hour"])))
image(x,y,z, col=mcol,
  xlab="Day of Year 2012", 
  ylab="Hour of day",
  main="Hovmoller plot of 2012 qc flags",
useRaster=TRUE)
Run Code Online (Sandbox Code Playgroud)

什么似乎是发生的是,填充值矩阵(Z)施加沿底部运行X轴第一(左到右),然后循环到顶部,而我需要它开始在左下角和上浮然后从左到右循环(希望这有点意义!)我的示例数据仅包括三天,但完整的数据集将是整整一年(2012年为366).在此先感谢您的帮助,

乔恩

structure(list(DOY = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, …
Run Code Online (Sandbox Code Playgroud)

plot r raster raster-graphics

5
推荐指数
1
解决办法
2971
查看次数

R中的模糊逻辑函数与Matlab一样

Matlab模糊逻辑工具箱,提出了模糊推理系统建模..是否存在所有工具箱的R等价物或某些R函数,如:

  1. readfis():从文件加载模糊推理系统
  2. evalfis():执行模糊推理计算

在R中读取和评估模糊系统?

matlab r

5
推荐指数
1
解决办法
8727
查看次数

如何将apply等效于任何for循环

大多数专业用户建议我永远不要在R中使用循环.请改用apply函数.问题是,如果您不熟悉函数式编程,那么为每个for/while循环编写一个应用等效项并不是那么直观.以下面的例子为例.

F <- data.frame(name = c("a", "b", "c", "d"), var1 = c(1,0,0,1), var2 = c(0,0,1,1),  
var3 = c(1,1,1,1), clus = c("one", "two", "three", "four"))
F$ObjTrim <- ""
for (i in 1:nrow(F))
{
 for (j in 2:(ncol(F)-1))
{
 if(F[i, j] == 1) 
 {F$ObjTrim[i]  <- paste(F$ObjTrim[i], colnames(F)[j], sep = " ") }

 }
  print(i)
}
Run Code Online (Sandbox Code Playgroud)

这里的目标是创建一个变量"ObjTrim",它接受所有具有值== 1的列名的值.有人可以建议一个等同于此的良好应用吗?

例如,上面的代码将给出:

 name var1 var2 var3  clus         ObjTrim
1    a    1    0    1   one       var1 var3
2    b    0    0    1   two            var3
3    c    0 …
Run Code Online (Sandbox Code Playgroud)

r apply

5
推荐指数
2
解决办法
1976
查看次数

R:所有可能独特结果的二进制矩阵

如何为'i'变量X的所有可能排列生成二进制矩阵,其中"i"可以是1和无穷大之间的任何数字.结果矩阵将具有2 ^ i个唯一行.

对于i = 2,变量x1,x2各自的可能值为1或0,因此得到的矩阵将是:

X1 X2
0 0
0 1
1 0
1 1
Run Code Online (Sandbox Code Playgroud)

R中是否有任何函数可以生成?

我试过以下功能:

   matrix(rbinom(160, 1, 0.5),ncol=5,nrow=(2^5))
Run Code Online (Sandbox Code Playgroud)

但结果并未显示所有可能的值.

binary r matrix binary-matrix

5
推荐指数
1
解决办法
4341
查看次数

如何在R中绘制此群集?

我有一堆不同点的x和y坐标以及它所属的集群.如何绘制群集?以下是我正在使用的示例:

x-values    y-values    cluster
3           5           0
2           3           1
1           4           0
8           3           0
2           2           2
7           7           2
Run Code Online (Sandbox Code Playgroud)

如何将点的散点图绘制为"*"或"+"并为群集着色,使其看起来像:

在此输入图像描述

注意我没有进行PCA分析.

r cluster-analysis

5
推荐指数
1
解决办法
2241
查看次数

在阿拉伯语区域设置中将日期格式化为完整的月份名称

要以完整月份名称格式格式化日期:[月份名称] [年份] 我使用:

\n\n
format(Sys.Date(),"%B %Y")\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,我会做同样的事情,但用阿拉伯语:

\n\n
## save locals\nloc <- Sys.getlocale("LC_TIME")\nSys.setlocale("LC_TIME","Arabic")\nformat(Sys.Date(),"%B %Y")\n## "????? 2015"          ## <----should have "\xd8\xac\xd9\x88\xd9\x8a\xd9\x84\xd9\x8a\xd8\xa9 2015"\n## restore locales\nSys.setlocale("LC_TIME",loc)\n
Run Code Online (Sandbox Code Playgroud)\n\n

阿拉伯月份不被“???”取代。我不认为这是打印/Unicode 问题,因为阿拉伯语在控制台中正确显示:

\n\n
"\xd9\x85\xd8\xb1\xd8\xad\xd8\xa8\xd8\xa7 "\n[1] "\xd9\x85\xd8\xb1\xd8\xad\xd8\xa8\xd8\xa7 "\n
Run Code Online (Sandbox Code Playgroud)\n\n

内部strptime 调用进行格式化,来自?strptime

\n\n
\n

在适当可用的情况下使用特定于区域设置的字符串转换

\n
\n\n

我认为strptime阿拉伯语没有正确的翻译。如果这是真的,我可以在哪里帮助解决这个问题?

\n\n

编辑

\n\n

AS 在评论中指出这似乎可能是特定于系统/操作系统的问题。\nindeed,在Ubuntu下 机器下,安装 language-pack-ar 并调用

\n\n
Sys.setlocale("LC_TIME", "ar_AE.utf8"); \nformat(Sys.Date(),"%B %Y") \n[1] "\xd9\x8a\xd9\x88\xd9\x84\xd9\x8a\xd9\x88 2015" \n
Run Code Online (Sandbox Code Playgroud)\n\n

给出了正确的答案。

\n\n

但在Windows下下,将语言环境设置为阿拉伯语(设置面板 -> 区域..)并调用问题的相同代码并不能解决问题。

\n

settings r date arabic

5
推荐指数
1
解决办法
1208
查看次数

如何有效地将多个rgl图连接到一个单独的图中?

rgl为我的数据的每个因子级别生成了包含3D图,并将它们保存为png.我的数据有30个不同的级别,导致30个不同的图像文件.现在我想将这些png组合成一个单独的图.

我会像这样显示它们:

在此输入图像描述

以下示例说明了我想要做的事情:

library(rgl)
library(png)
library(gridExtra)
library(ggplot2)

## creates a png in the working directory which can be used as an example
example(surface3d)
rgl.snapshot("example.png")
rgl.close()

## imports the png files; in the example, the same file is imported multiple times.
if(exists("png.df")) rm(png.df)
for (i in 1:9) {
  png.i <- readPNG("example.png")

  g <- rasterGrob(png.i, interpolate=TRUE)
  g <- g$raster
  g <- as.vector(g)
  g <- matrix(g, nrow = 256, ncol = 256, dimnames = list(1:256, 1:256))

  df.i <- data.frame(i = rep(row.names(g), …
Run Code Online (Sandbox Code Playgroud)

plot png r ggplot2 rgl

4
推荐指数
1
解决办法
1465
查看次数

使用$ vs. []表示法创建xts对象的滞后变量

我试图使用该lag函数在xts对象中创建一个滞后向量.它在使用$符号(例如x.ts$r1_lag)在xts对象中定义新向量时起作用,但在使用方括号定义新变量时也是如此,即xts[,"r1_lag"].见下面的代码:

library(xts)
x <- data.frame(date=seq(as.Date('2015-01-01'), by='days', length=100),
                runif(1e2), runif(1e2), runif(1e2))
colnames(x) <- c("date", "r1", "r2", "r3")

#the following command works
x.ts <- xts(x, order.by=x$date)
x.ts$r1_lag <- lag(x.ts$r1)
# but the following does not (says subscript is out of bounds)
x.ts <- xts(x, order.by=x$date)
x.ts[,"r1_lag"] <- lag(x.ts[,"r1"])
Run Code Online (Sandbox Code Playgroud)

我需要使用[]符号而不是$符号来引用向量,因为如果我想对多个xts对象中的向量运行滞后变换(多个xts对象列表中的向量),我无法在其中定义新向量使用$符号的对象,即我不能使用下面的程式化循环中的符号来定义新的向量:

for (i in letters) {
  for (j in variables) {
    macro.set.ts$i$paste(j,"_L1",sep="") <- lag(macro.set.ts[[i]][,j])
    macro.set.ts$i$paste(j,"_L2",sep="") <- lag(macro.set.ts[[i]][,j], 2)
    macro.set.ts$i$paste(j,"_L4",sep="") <- …
Run Code Online (Sandbox Code Playgroud)

r nested-lists xts

4
推荐指数
1
解决办法
754
查看次数