说我有一个data.frame:
df <- data.frame(A=c(10,20,30),B=c(11,22,33), C=c(111,222,333))
A B C
1 10 11 111
2 20 22 222
3 30 33 333
Run Code Online (Sandbox Code Playgroud)
如果我选择两个(或更多)列,我会得到一个data.frame:
x <- df[,1:2]
A B
1 10 11
2 20 22
3 30 33
Run Code Online (Sandbox Code Playgroud)
这就是我要的.但是,如果我只选择一列,我会得到一个数字向量:
x <- df[,1]
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用as.data.frame(),它不会更改两列或更多列的结果.它确实在一列的情况下返回data.frame,但不保留列名:
x <- as.data.frame(df[,1])
df[, 1]
1 1
2 2
3 3
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它会像这样.在我看来,如果我提取一个或两个或十个列,它应该没有区别.IT应始终返回向量(或矩阵)或始终返回data.frame(具有正确的名称).我错过了什么?谢谢!
注意:这不是关于矩阵的问题的重复,因为矩阵和data.frame在R中是根本不同的数据类型,并且可以与dplyr不同地工作.有几个答案适用于data.frame但不适用于矩阵.
我正在尝试使用Octave读取包含数字和字符串的文本文件.文件格式如下:
ABC
a 10 100
b 20 200
c 30 300
d 40 400
e 50 500
但分隔符可以是空格,制表符,逗号或分号.如果分隔符是空格/制表符,则textread函数可以正常工作:
[A,B,C] = textread ('test.dat','%s %d %d','headerlines',1)
但是,如果分隔符是逗号/分号,则它不起作用.我试着用dklmread:
dlmread ('test.dat',';',1,0)
但它不起作用,因为第一列是一个字符串.基本上,使用textread我无法指定分隔符,而使用dlmread我无法指定第一列的格式.至少在Octave中没有这些功能的版本.以前有人遇到过这个问题吗?
我正在尝试制作一个等高线图(或水平图,我并不特别关心哪一个),看起来像这样:
我有这个代码:
contourplot(z~x*y, data=df1, xlim=c(0,100), ylim=c(0,50),
scales=list(x=list(at=c(0,20,40,60,80,100)),
y=list(at=c(0,10,20,30,40,50))),
at=seq(0,5000,by=500))
Run Code Online (Sandbox Code Playgroud)
效果很好,但是当我尝试添加这样的颜色时:
contourplot(z~x*y, data=df1, xlim=c(0,100), ylim=c(0,50),
scales=list(x=list(at=c(0,20,40,60,80,100)),
y=list(at=c(0,10,20,30,40,50))),
at=seq(0,5000,by=500), region=T,
colorkey=list(at=seq(0,5000,by=10)), col.regions=rainbow(5000))
Run Code Online (Sandbox Code Playgroud)
我得到这个可怕的结果:
我认为问题主要是规模问题,但无论我尝试哪种价值观at,col.regions我都无法改变结果。我什至尝试过这个interpolate选项,但它并没有什么区别。我已经搜索了很多,但我不得不说我发现lattice的文档有点复杂。
数据框是这样的:
structure(list(x = c(99.9735523336143, 99.9735523336143, 99.9735523336143,
9.99735523336143, 99.9735523336143, 99.9735523336143, 99.9735523336143,
99.9735523336143, 9.99735523336143, 99.9735523336143, 9.99735523336143,
9.99735523336143, 9.99735523336143, 9.99735523336143, 9.99735523336143,
9.99735523336143, 19.9947104667229, 19.9947104667229, 19.9947104667229,
19.9947104667229, 19.9947104667229, 19.9947104667229, 19.9947104667229,
19.9947104667229, 29.9920657000843, 29.9920657000843, 29.9920657000843,
29.9920657000843, 29.9920657000843, 29.9920657000843, 29.9920657000843,
29.9920657000843, 39.9103904572927, 39.9103904572927, 39.9103904572927,
39.9103904572927, 39.9103904572927, 39.9103904572927, 39.9103904572927,
39.9103904572927, 49.9867761668072, 49.9867761668072, 49.9867761668072,
4.99867761668072, 49.9867761668072, 49.9867761668072, 49.9867761668072,
49.9867761668072, 4.99867761668072, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 (s)apply 将两个不同维度的矩阵相乘。矩阵是:
xx <- matrix(c(1, 2, 3, 4, 5, 6), nrow=2, ncol=3, byrow=T)
yy <- matrix(c(10, 100), nrow=2, ncol=1, byrow=T)
Run Code Online (Sandbox Code Playgroud)
我想要的是将一个矩阵的每一行与另一个矩阵的每一行相乘并获得:
> zz
[,1] [,2] [,3]
[1,] 10 20 30
[2,] 400 500 600
Run Code Online (Sandbox Code Playgroud)
我试过sapply(yy, function(x) xx*x)产生一个 6x2 矩阵而不是我想要的 3x2 矩阵。还apply(yy, 2, function(x) xx*x)产生一个6X1矩阵不起作用。在过去的类似情况下,我使用sapply没有问题,所以我不明白为什么这现在不起作用(我总是在绕着头走时遇到一些麻烦*apply)。我究竟做错了什么?
通常,我使用chron来表示日期/时间对象.但是,我需要使用一些与POSIX格式一起使用的函数,所以我试图从chron转到POSIXct.使用as.POSIXct()似乎可以工作,但结果是在本地时间而不是GMT(原始数据在GMT中).
x <- chron(dates="05/12/15", times="12:30:45")
as.POSIXct(x, tz="GMT")
"2015-05-12 13:30:45 BST"
Run Code Online (Sandbox Code Playgroud)
我想要的是:
"2015-05-12 12:30:45 GMT"
Run Code Online (Sandbox Code Playgroud)
但我找不到获得它的方法.
strptime()将无法工作,因为原始输入不是字符串,而是chron对象.当然,我可以从一个chron对象转到一个字符串,然后转到POSIXct,但这似乎有点令人费解.
我想我可以强制我的R会话使用GMT和Sys.timezone(),但我不愿意.还有其他建议吗?谢谢.
我需要处理一系列曲线,如下图所示.我想要做的是选择曲线中"平坦"的部分,即彩色部分(忽略不同的颜色).我当然可以手动完成,就像我为这个数字所做的那样,但这是一项冗长乏味的任务.我找不到可以做到这一点的功能或包 - 主要是因为我不知道如何调用这种类型的分析.有人能指出我正确的方向吗?

x <- c(2891.772,7143.258,13610.388,25692.848,48727.260,79326.336,96609.834,92664.960,76867.428,61821.760,51122.910,43083.040,39840.163,37286.424,34921.704,33515.898,32583.036,31997.868,32203.850,31092.060,30280.570,29822.526,29493.870,29405.694,29603.545,28848.582,29283.450,29159.202,29420.724,28916.718,29088.060,28846.578,28878.642,28310.508,28798.560,28685.256,28422.732,28134.156,28373.634,28355.813,28496.880,27905.700,28116.447,28293.627,9116.107,6371.718,4539.060,3203.200,1992.978,1320.636,861.992,638.911,478.956,313.626,231.231,151.302,106.318,98.392,65.130,49.098,38.076,40.080,36.072,28.056,37.074,28.224,42.084,38.114,25.050,24.048,33.066,35.070,26.052,26.052,16.160,24.048,23.069,17.034,31.093,22.044,19.038,21.042,27.081,25.050,23.023,20.040,19.019,21.063,32.064,21.042,20.060,21.042,21.042,25.200,21.021,17.051,18.036,19.038,26.052,25.050,4.048,25.050,25.050,13.026,25.050,22.044,20.040,19.038,19.038,17.017,30.060,17.017,18.036,20.040,24.048,16.032,15.015,18.036,16.016,10.020,14.028,16.032,16.128,24.048,19.038,20.040,17.017,12.024,17.034,19.057,16.032,12.024,15.045,16.032,27.054,15.030,320.640,5997.972,24837.289,61030.818,104415.311,125609.718,117072.678,91065.379,65335.410,47371.554,36088.032,29700.836,25411.005,23390.688,21863.984,20463.443,20130.180,19619.160,19304.741,18867.660,18280.488,18246.576,18151.230,18051.030,18097.122,17686.302,17769.468,17500.483,17615.689,17409.750,17171.274,17369.670,17222.376,17640.210,17519.401,17291.514,17452.200,17566.549,17579.088,18287.699,17627.725,17835.600,17848.626,17774.163,18295.518,18281.490,18242.224,20795.508,33304.615,47859.528,68305.338,77375.442,77291.274,73746.900,70728.174,70676.395,69709.640,69602.928,69859.953,69732.663,71487.690,71840.800,70562.492,72048.810,70596.912,71397.510,72172.871,70747.677,71460.636,71211.060,71017.752,71285.286,72170.052,72483.678,72126.966,71505.726,72755.220,72148.008,54343.731,42154.140,33928.481,28074.036,21933.780,16357.650,12583.116,10036.032,8659.284,8279.526,8248.464,8999.964,9923.808,11421.161,12934.818,14374.360,15590.118,16705.689,18170.072,19323.570,20167.147,21160.236,21244.404,22014.942,22510.932,22795.500,23483.874,23582.559,23494.471,24271.446,24106.116,24194.170,24452.808,24526.956,24093.090,24822.546,24805.512,25136.172,25008.802,25417.023,24888.864,25402.704,24886.436,24721.344,24470.844,24631.164,24726.354,24606.114,24826.802,24969.840,24717.336,24412.728,24395.969,24439.415,24711.324,44541.906,65939.616,126498.360,224679.462,258782.532,214498.140,160828.014,123817.140,104069.724,94299.051,88682.010,84510.684,83337.306,82116.613,81277.230,81206.088,80375.430,80781.620,79833.348,81957.034,81954.582,83004.678,83084.001,82011.696,80649.978,80587.854,80514.708,79381.446,80502.422,80047.000,81602.074,80374.402,81839.352,80076.511,79584.852,79633.185,78967.620,78584.506,43499.826,31657.188,22512.335,16062.042,11563.080,7580.674,4479.942,2414.820,1388.772,729.456,447.447,306.612,208.416,142.284,160.320,121.121,126.252,119.238,83.166,91.182,75.150,78.156,76.152,82.246)
Run Code Online (Sandbox Code Playgroud)