我有一个函数,我在其中定义一个data.frame我使用循环来填充数据.在某些时候,我收到警告消息:
警告消息:1:In
[<-.factor(*tmp*,iseq,value ="CHANGE"):生成的因子级别无效
因此,当我定义我的data.frame时,我想将选项设置stringsAsFactors为FALSE但我不明白该怎么做.
我试过了:
DataFrame = data.frame(stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
并且:
options(stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
设置stringsAsFactors选项的正确方法是什么?
我尝试将单引号添加到字符串但不知道如何操作.例如,我想用'ABC'取代ABC.
我玩糊,猫,打印,但看不到怎么做.
有解决方案吗
谢谢,文森特
我是R的新手,更喜欢ts对象.我尝试在数据帧(df)的向量上使用PerformanceAnalytics包.
我有以下数据框:
row.names Date PnL
1 22 1992-01-02 -1.751133e-02
2 23 1992-01-03 -1.586737e-02
3 24 1992-01-06 -2.898982e-02
Run Code Online (Sandbox Code Playgroud)
我试过了:
TestS=SharpeRatio.annualized(df[,"PnL"],Rf=0,scale=252)
TestS=SharpeRatio.annualized(as.ts(df[,"PnL"]),Rf=0,scale=252)
Run Code Online (Sandbox Code Playgroud)
它分别返回对象中的错误,并且:
checkData中的错误(R,method ="xts"):数据无法转换为时间序列.如果您尝试从具有一列的数据对象传入名称,则应使用"data [rows,columns,drop = FALSE]"形式.Rownames应具有标准日期格式,例如'1985-03-15'
dput(df[,"PnL")=0.00994504296273811, 0.00156467225423175, 0.00976137048829638, etc.
dputdf[,"Date")=8036, 8037, 8040, 8041,etc.
Run Code Online (Sandbox Code Playgroud)
该软件包的帮助说该函数适用于vector.我没有任何NA,因此我不明白为什么它不起作用.
我想比较两个列表(两行数据帧)并计算两个列表之间的差异.
例如:
list1=a,b,c,a
list2=a,a,d,d
Run Code Online (Sandbox Code Playgroud)
列表1的两个元素在列表2中
我能够用循环和求和来做到这一点,但效率非常低.在R中有任何功能吗?
我检查了setdiff和比较包,但没有发现任何有用的东西.
谢谢你的想法,
文森特
我的功能如下:
NRebalancing=function(NamePresent)
{
Nbexchange=NamePresent[,2]
Nbexchange=NamePresent[1,2]=0
for (i in 2:nrow(NamePresent))
{
print(i)
compteur=0
NameNeeded=NamePresent[i,]
NameNeeded=unique(NameNeeded)
NameNeeded=na.omit(NameNeeded)
for(j in 2:length(NameNeeded))
#j=1 correspond a une date
{
compteur = compteur+(abs(sum(NamePresent[i,]==as.character(NameNeeded[j]))-sum(NamePresent[i-1,]==as.character(NameNeeded[j]))))
}
Nbexchange[i]=compteur
}
return(Nbexchange)
}
Run Code Online (Sandbox Code Playgroud)