假设我们有以下数据.行代表一个国家/地区,而columns(in05:in09)表示该国家/地区是否存在于给定年份(2005:2009)中感兴趣的数据库中.
id <- c("a", "b", "c", "d")
in05 <- c(1, 0, 0, 1)
in06 <- c(0, 0, 0, 1)
in07 <- c(1, 1, 0, 1)
in08 <- c(0, 1, 1, 1)
in09 <- c(0, 0, 0, 1)
df <- data.frame(id, in05, in06, in07, in08, in09)
Run Code Online (Sandbox Code Playgroud)
我想创建一个变量firstyear,指示该国家在数据库中出现的第一年.现在我做以下事情:
df$firstyear <- ifelse(df$in05==1,2005,
ifelse(df$in06==1,2006,
ifelse(df$in07==1, 2007,
ifelse(df$in08==1, 2008,
ifelse(df$in09==1, 2009,
0)))))
Run Code Online (Sandbox Code Playgroud)
上面的代码已经不是很好了,我的数据集包含了很多年.是否有替代方法,使用*apply函数,循环或其他东西来创建此firstyear变量?
我遇到区分大小写的问题.我们可以把它关掉吗?
A1 <- c("a", "A", "a", "a", "A", "A", "a")
B1 <- c(rep("a", length(A1)))
A1 == B1
# [1] TRUE FALSE TRUE TRUE FALSE FALSE TRUE
Run Code Online (Sandbox Code Playgroud)
应该是全部 TRUE
运算符/=(斜杠等于)在Python中意味着什么?
我知道|=是一个集合运算符.我以前没见过/=.
我在.csv文件中输入了一个文本字符串,其中包含unicode符号:\U00B5g/dL.在.csv文件以及R数据框中读取:

test=read.csv("test.csv")
Run Code Online (Sandbox Code Playgroud)

\U00B5会产生微观符号μ.R将其读入数据文件(\U00B5).但是当我打印它显示的字符串时\\U00B5 g/dL.
或者,手动输入代码可以正常工作.
varname <- c("a", "b", "c")
labels <- c("A \U00B5 g/dL", "B \U00B5 g/dL", "C \U00B5 g/dL")
df <- data.frame(varname, labels)
test <- data.frame(varname, labels)
test
# varname labels
# 1 a A µ g/dL
# 2 b B µ g/dL
# 3 c C µ g/dL
Run Code Online (Sandbox Code Playgroud)
我想知道如何\在这种情况下摆脱逃生标志并打印出符号.或者,如果有另一种方法在R中打印出符号
非常感谢你的帮助!
我喜欢的的parallel包在R和它是多么容易和直观做并行版本apply,sapply等等.
是否有类似的并行功能replicate?
我试图在csv文件列表中读取.这些csv文件有";" 作为它的分隔符.在读取csv文件失败后,我试图将其中一个csv文件中的内容切割成几个部分,并读入每个部分的值以查看问题的原因.
这个方法对我有用,我找到了一个适用于我的数据的工作代码:
y <- data.table(read.table(filenames[i], header = FALSE, sep = ";",
comment.char = "", fill = TRUE, check.names = FALSE,
blank.lines.skip = TRUE))
Run Code Online (Sandbox Code Playgroud)
但我遇到了另一个问题.当我将原始数据复制并粘贴到csv文件中并运行代码时,它工作正常.但是,当我尝试在原始csv文件上运行相同的代码时,它会给我"嵌入空值"警告.
在外部,原始数据和复制的数据看起来完全相同,并且它们都以csv格式保存.因此,我很难找到导致警告的原因以及我原来的csv文件和复制的csv文件之间的区别.
数据类似于以下内容:
Measurement Reports export file;
;
Comment;Time ;E_MW;E_PF;INV11_ACKW;INV12_ACKW;INV21_ACKW;INV22_ACKW;INV31_ACKW;INV32_ACKW;INV41_ACKW;INV42_ACKW;INV51_ACKW;INV52_ACKW;INV61_ACKW;INV62_ACKW;M1_ATEMP;M1_HUMID;M1_PYRA1S;M1_PYRA2S;M1_PYRA3S;M1_WDIREC;M1_WSPEED;
;
;00:00;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.32 ;82.32 ;0.00 ;0.00 ;0.00 ;234.83 ;0.00 ;
;00:01;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.26 ;82.57 ;0.00 ;0.00 ;0.00 ;214.93 ;0.00 ;
; …Run Code Online (Sandbox Code Playgroud) 什么是相当于RStudio的Knit HTML的简洁命令行?给定一个.Rmd文件,您可以使用RStudio来编织.html,.docx并.pdf使用Knitr编辑文件.将此过程完全转移到命令行会很棒.到目前为止我的方法:
Rscript -e "library(knitr); knit('test.Rmd')" # This creates test.md
pandoc test.md >> test.html
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但结果test.html并没有像在RStudio中那样漂亮.任何建议如何通过命令行最好地编织.Rmd文件.html,并最终得到漂亮.html?
额外的问题:什么是最好的命令行的解决方案.pdf或.docx?
基本上,我试图在我的分析中保留一个名为dates特殊Dates 的向量,比如新年2016和2015年7月4日.我希望能够从名称而不是索引中提取稳健性,例如,dates["nyd"]获得新年,并dates["ind"]获得7月4日.
我觉得这很简单:
dates <- as.Date(c(ind = "2015-07-04", nyd = "2016-01-01"))
Run Code Online (Sandbox Code Playgroud)
但as.Date剥夺了名字:
dates
# [1] "2015-07-04" "2016-01-01"
Run Code Online (Sandbox Code Playgroud)
它不像Date矢量不能被命名(这将是奇怪的,因为它们基本上是特定解释integer的):
setNames(dates, c("ind", "nyd"))
# ind nyd
# "2015-07-04" "2016-01-01"
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有办法Date直接声明一个向量(据我所知?),尤其是在不知道日期的基础整数值的情况下.
探索这一点,似乎这是as*函数类的标准实践:
as.integer(c(a = "123", b = "436"))
# [1] 123 436
as(c(a = 1, b = 2), "character")
# [1] "1" "2"
Run Code Online (Sandbox Code Playgroud)
有这样的原因吗?在?as我看过的任何其他帮助页面中都没有提到名称丢失.
更一般地说,有没有办法(使用除了之外的东西as*)来确保对象的名称不会在转换中丢失?
当然,一种方法是编写自定义函数,as.Date.named或者创建一个as.named带有相关方法的自定义类,但是如果没有这样的东西已经到位,那将会让我感到惊讶,因为看起来这应该是一个非常常见的操作.
如果重要,我在3.2.2.
r ×9
if-statement ×1
knitr ×1
loops ×1
nested-loops ×1
plot ×1
python ×1
r-faq ×1
r-markdown ×1
rstudio ×1
syntax ×1
unicode ×1
warnings ×1