这本来是一件微不足道的事情,但我没有发现任何可以谷歌搜索的东西。
我在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的逐行结构更容易
显然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) 在 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上交叉发布了这个问题。
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)
我有一张桌子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)
我无法将函数内部的内容查询恢复为函数的输出.
r ×3
coefplot ×1
data.table ×1
function ×1
pipe ×1
plpgsql ×1
postgresql ×1
read.csv ×1
read.table ×1
sql ×1
sql-function ×1
stata ×1
stata-macros ×1