我有一些看起来像这样的数据(例如假数据):
dressId color
6 yellow
9 red
10 green
10 purple
10 yellow
12 purple
12 red
Run Code Online (Sandbox Code Playgroud)
其中颜色是因子向量.不能保证该因子的所有可能水平实际上都出现在数据中(例如,颜色"蓝色"也可以是其中一个水平).
我需要一个矢量列表,将每件衣服的可用颜色分组:
[[1]]
yellow
[[2]]
red
[[3]]
green purple yellow
[[4]]
purple red
Run Code Online (Sandbox Code Playgroud)
保留连衣裙的ID会很好(例如,这个列表是第二列的数据帧,ID是第一列),但不是必需的.
我写了一个循环,它遍历行的数据帧行,而下一个ID是相同的,它将颜色添加到矢量.(我确信数据按ID排序).当第一列中的ID更改时,它会将向量添加到列表中:
result <- NULL
while(blah blah)
{
some code which creates the vector called "colors"
result[[dressCounter]] <- colors
dressCounter <- dressCounter + 1
}
Run Code Online (Sandbox Code Playgroud)
在努力获得所有必要的计数变量之后,我发现我不高兴它不起作用.第一次colors是
[1] yellow
Levels: green yellow purple red blue
Run Code Online (Sandbox Code Playgroud)
并且它被强制转换成整数,所以result变成了2.
在第二个循环重复中,colors只包含红色,并result成为一个简单的整数向量[1] 2 4. …
我想写一个文件,然后在一个循环(在Windows机器上)附加几次.每次我追加它之后,我想关闭连接,因为我希望文件下沉到一个Dropbox帐户,这样我可以在其他计算机上打开它,同时代码正在运行,以检查日志文件的状态(注意这个条件使得这个问题不同于任何关于关于接收器,writeLines,write,cat等的问题.我试过了
#set up writing
logFile = file("log_file.txt")
write("This is a log file for ... ", file=logFile, append=FALSE)
for(i in 1:10){
write(i, file=logFile, append=TRUE)
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过sink(file=logFile,append=TRUE); print(i); sink(); 在循环中也是cat.两种选择都不起作用.该文件仅显示i = 10,即循环的最后一次迭代.我注意到写文档中的以下句子.
"如果为TRUE,则数据x将附加到连接中."
以上是否意味着它不会附加到现有文件.
当我在 R 中运行分位数回归时,使用quantreg包,然后运行summary(quantregObject),我收到此错误消息:
base::backsolve(r, x, k = k, upper.tri = upper.tri, transpose = transpose, : 'backsolve' 中的奇异矩阵中的错误。对角线 [1] 中的第一个零
任何建议我怎么能解决这个问题?
我无法在R中加载汽车包.我尝试重新安装使用
install.packages("car",dependencies=TRUE)
Run Code Online (Sandbox Code Playgroud)
来自R和RStudio.我尝试quantreg按照另一篇文章中的建议进行安装,然后重新安装.安装似乎是成功的,但根本无法加载程序.
这是完整的错误:
loadNamespace出错(j < - i [[1L]],c(lib.loc,.libPaths()),versionCheck = vI [[j]]):没有名为'pbkrtest'的包
另外:警告信息:包'car'是在R版本3.2.3下构建的.
错误:'car'的包或命名空间加载失败
理解下面mylist[2]和mylist[[2]]下面之间差异的基本逻辑或哲学基础是什么?
理解单方括号与双方括号的简单逻辑方法是什么?
> mylist <- list(1, list("a","b","c"))
> mylist[2]
# [[1]]
# [[1]][[1]]
# [1] "a"
# [[1]][[2]]
# [1] "b"
# [[1]][[3]]
# [1] "c"
> mylist[[2]]
# [[1]]
# [1] "a"
# [[2]]
# [1] "b"
# [[3]]
# [1] "c"
Run Code Online (Sandbox Code Playgroud) 我创建了从00:00:00到23:00:00的时间序列.在总和小于或等于23:00:00之前,添加任意小时数都很容易.在总和超过23:00:00后,它开始显示天数的时间,这是非常直观的.但我希望输出在一个时钟时间内,无论我是减法还是加法
假设我想像下面这样做
library(chron)
times("23:00:00")+ times("01:00:00")
Time in days:
[1] 1
Run Code Online (Sandbox Code Playgroud)
我想要的输出低于一.而不是得到我想要的日子
00:00:00
Run Code Online (Sandbox Code Playgroud)
我也试过减法
times("00:00:00")- times("01:00:00")
[1] -0.04166667
Run Code Online (Sandbox Code Playgroud)
期望的输出
"23:00:00"
Run Code Online (Sandbox Code Playgroud)
我也尝试使用POSIXct,但它在各种情况下都会出现各种错误
as.POSIXct("00:00:00", format = "%H:%M:%S", tz = "UTC")
[1] "2017-02-07 UTC" #Not printing time. Only dates
Run Code Online (Sandbox Code Playgroud)
使用POSIXct减法
as.POSIXct("00:00:00", format = "%H:%M:%S", tz = "UTC") -as.POSIXct("01:00:00", format = "%H:%M:%S", tz = "UTC")
Time difference of -1 hours
Warning message:
In 1:0:0 : numerical expression has 2 elements: only the first used
Run Code Online (Sandbox Code Playgroud)
使用POSIXct添加
as.POSIXct("23:00:00", format = …Run Code Online (Sandbox Code Playgroud) 我试图通过使用doParallelR中的包来减少我的代码的运行时间.
我正在调用一个函数awareRateSIR,在这个函数的主体中使用了一些额外的包.我得到一些错误
找不到功能"vcount"和..
我知道vcount是包的功能,igraph即在使用awareRateSIR),但它不是唯一的一个.我怎么解决这个问题?我以为我应该传递我的函数中使用的所有包名,awareRateSIR但我不知道我怎么不能导出多个函数foreach或如何导出多个包名.
这是我的代码:
tp<-foreach(i=1:iter, .inorder = FALSE, .export = "awareRateSIR",
.packages = "igraph", .packages="doParallel")%dopar%{
tp <- awareRateSIR(graphContact, graphCom,state)
return(tp)
}
Run Code Online (Sandbox Code Playgroud)
如果我没有传递这些包,我将得到错误状态,如果我传递所有包,我会得到错误的一些函数是未知的:
foreach中的错误(i = 1:iter,.inorder = FALSE,.export ="awareRateSIR",:形式参数".packages"由多个实际参数匹配"
提前致谢
我有这种形式的数据:
ds y
1 2015-12-31 51737806366
2 2016-01-01 451800500
3 2016-01-04 48503189
4 2016-01-06 221000
5 2016-01-07 542483038
6 2016-01-08 628189789
7 2016-01-09 556762005
8 2016-01-10 195672447
9 2016-01-11 279202668
10 2016-01-12 540234196
11 2016-01-13 3403591404
12 2016-01-14 610409176
Run Code Online (Sandbox Code Playgroud)
'y'列上的值表示收入,货币单位.我以原始形式对这些数据进行了探索性绘图,发现该图不太有用,数据的视觉效果不合适,所以为了改进我的可视化,我将一个log2()转换应用到了'y'列...它工作得很好:
ds y
1 2015-12-31 35.59050
2 2016-01-01 28.75111
3 2016-01-04 25.53158
4 2016-01-06 17.75369
5 2016-01-07 29.01500
6 2016-01-08 29.22663
7 2016-01-09 29.05249
8 2016-01-10 27.54387
9 2016-01-11 28.05674
10 2016-01-12 29.00901
11 2016-01-13 31.66441 …Run Code Online (Sandbox Code Playgroud) 我遇到了一个看似简单的问题,但我无法找到解决方案。也就是说,我有一个表,其中第一列包含所有可用应用程序的列表,而其他列代表用户及其拥有的应用程序列表:
我正在尝试将表转换为 pandas DataFrame 并在第一列上对齐匹配值。所需的输出应如下所示:
import pandas as pd
df = pd.read_excel('U:/Desktop/appdata.xlsx')
df.head(10)
Out[21]:
Applications User 1 User 2 User 3 User 4 User 5
0 App1 App1 App2 App1 App1 App2
1 App2 App3 App3 App2 App3 App3
2 App3 App10 App4 App7 App4 App4
3 App4 NaN App5 App8 App5 App5
4 App5 NaN NaN App10 App6 App6
5 App6 NaN NaN NaN NaN App7
6 App7 NaN NaN NaN NaN App8
7 App8 NaN NaN NaN NaN …Run Code Online (Sandbox Code Playgroud)