我找不到适合该问题的标题,请随时对其进行编辑。
我有这个数据
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)
我想删除具有相同to且from同时的重复行,而不计算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中的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后,是否有任何方法可以在节点上进一步工作?或者还有其他好的替代方案可以解决节点中的数据吗?
我正在尝试制作一个栅格图(如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) Matlab模糊逻辑工具箱,提出了模糊推理系统建模..是否存在所有工具箱的R等价物或某些R函数,如:
在R中读取和评估模糊系统?
大多数专业用户建议我永远不要在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) 如何为'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)
但结果并未显示所有可能的值.
我有一堆不同点的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分析.
要以完整月份名称格式格式化日期:[月份名称] [年份] 我使用:
\n\nformat(Sys.Date(),"%B %Y")\nRun 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)\nRun 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 "\nRun Code Online (Sandbox Code Playgroud)\n\n内部strptime 调用进行格式化,来自?strptime:
\n\n\n在适当和可用的情况下使用特定于区域设置的字符串转换
\n
我认为strptime阿拉伯语没有正确的翻译。如果这是真的,我可以在哪里帮助解决这个问题?
AS 在评论中指出这似乎可能是特定于系统/操作系统的问题。\nindeed,在Ubuntu下 机器下,安装 language-pack-ar 并调用
\n\nSys.setlocale("LC_TIME", "ar_AE.utf8"); \nformat(Sys.Date(),"%B %Y") \n[1] "\xd9\x8a\xd9\x88\xd9\x84\xd9\x8a\xd9\x88 2015" \nRun Code Online (Sandbox Code Playgroud)\n\n给出了正确的答案。
\n\n但在Windows下下,将语言环境设置为阿拉伯语(设置面板 -> 区域..)并调用问题的相同代码并不能解决问题。
\n我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) 我试图使用该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)