小编Luc*_*ion的帖子

R从带有csv文件内容的内联字符串中读取.csv数据

这本来是一件微不足道的事情,但我没有发现任何可以谷歌搜索的东西。

我在csv文件中有以下数据

test.csv

var1,var2
'a',1
'b',2
Run Code Online (Sandbox Code Playgroud)

我读到R

d <- read.csv('test.csv')
Run Code Online (Sandbox Code Playgroud)

这有没有办法让我在R代码中插入csv文件的内容?就像是:

d <- read.csv(
    'var1,var2\n
    'a',1\n
    'b',2')
Run Code Online (Sandbox Code Playgroud)

(以上语法不起作用)

我怎么能告诉R输入字符串应该被当作数据本身而不是包含它的文件名?

这将用于向Rmarkdown中添加小表,而无需创建一堆辅助文件

我当然可以添加相同的信息

d <- data.frame(
  var1=c('a','b'),
  var2=1,2
)
Run Code Online (Sandbox Code Playgroud)

但是按向量列出数据向量会使过程变慢。CSV的逐行结构更容易

r read.table read.csv

2
推荐指数
1
解决办法
1519
查看次数

错误:ifelse(d==0,NA,d),其中 d 是整数64 返回无意义(以“num”形式)

显然ifelse完全改变了数字并且不保留输入的数据类型

例如:

library(bit64)
d <- c(1:10,NA,12,0) %>% as.integer64()
d %>% str
Class 'integer64'  num [1:13] 4.94e-324 9.88e-324 1.48e-323 1.98e-323 2.47e-323 ...

ifelse(d==0,NA,d) %>% str
 num [1:13] 4.94e-324 9.88e-324 1.48e-323 1.98e-323 2.47e-323 ...
ifelse(d==0,5,d) %>% str
num [1:13] 4.94e-324 9.88e-324 1.48e-323 1.98e-323 2.47e-323 ...
ifelse(d==5,50,d) %>% str
num [1:13] 4.94e-324 9.88e-324 1.48e-323 1.98e-323 5.00e+01 ...
Run Code Online (Sandbox Code Playgroud)

上图: - 输出中的数字是无意义的 - 输出的格式是“num”

这是一个已知问题吗?

有其他函数可以代替吗ifelse

ifelseEdit1:用 data.table 操作替换

d <- data.table(a=c(1:10,NA,12,0) %>% as.integer64 )
d[a==0,a:=NA]
d
                       a
 1:                   1 …
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
1
解决办法
236
查看次数

在 coefplot 中仅绘制交互项

在 Stata 中进行回归后,我试图仅绘制交互项的系数。

我无法使用社区贡献的命令来做到这一点coefplot

这是一个可重现的示例和我尝试的解决方案:

sysuse auto, clear
reg price foreign i.turn foreign#i.turn

*this plots all coefficients:
coefplot,

*this drops _cons and foreign but not i.turn
coefplot, drop(i.turn _cons foreign )

*variations with keep also do not work
coefplot, keep(foreign#i.turn )
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点?

我已经在Statalist上交叉发布了这个问题。

stata coefplot stata-macros

2
推荐指数
2
解决办法
3253
查看次数

在`dt2 &lt;- dt %&gt;% myfun`中,为什么要修改dt?

library(tidyverse)
library(data.table)
dt <- data.table(x=1:3)
dt[x==1]
myfun <- function(d) d[x==1,x:=NA]
dt2 <- dt %>% myfun
dt[x==1]
Run Code Online (Sandbox Code Playgroud)

在这个例子中,dt(一个data.table)作为参数通过管道发送给一个函数(myfun)。然后将结果保存到对象 dt2 中。

为什么 dt 被修改?(如您所见,第 1 行中 x 的值从 1 变为 NA)

r function pipe data.table

1
推荐指数
1
解决办法
50
查看次数

PostgreSQL函数,select返回一个值

我有一张桌子years(每只耳朵的1号).我想创建一个函数,它接受这些年中的每一年并在另一个表上运行查询来计算属于该年份的行数.我尝试用pl/pgsql实现,使用下面的代码,但我没有让它工作或在Internet上找到任何引用.

CREATE or REPLACE FUNCTION func_test(in AAA date, OUT _result int) 
BEGIN
   SELECT SUM(st_length(geom)) as BBB
   FROM hist_line
   WHERE '2006-01-01' BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31');
   RETURN _result BBB;
END;
$$ LANGUAGE plpgsql;
CREATE or REPLACE FUNCTION func_test(date) 

select func_test('2009-01-01');
Run Code Online (Sandbox Code Playgroud)

我无法将函数内部的内容查询恢复为函数的输出.

sql postgresql plpgsql sql-function

0
推荐指数
1
解决办法
7483
查看次数